12) 面向对象 (3)

Java面向对象(3)

static关键字详解

private static int age;//静态变量
private double score;//非静态变量

public static void main(String[] args) {
	Student s1 = new Student();
	//new一个对象之后,可以正常调用
	s1.score;
	s1.age;
	
	//类变量可以正常调用
	Student.age;
	
	Student.score;//Waring: Non-Static field 'score' cannot be referenced from a static context

}

//方法
public void run(){

}
public static void go() {

}
//静态方法和非静态方法可以调用静态方法;
//静态方法不能调用非静态方法;
public static void main(String[] args) {
	//调用非静态方法
	new Student().run();
    //调用静态方法,可以不用new
    Student.go();
}

{
    匿名代码块
}
static {
    静态代码块 (仅仅执行一次)
}

执行顺序:静态代码块(只执行一次),匿名代码块,构造方法


抽象类

  • abstract修饰符用来修饰方法也可以修饰类。

public abstract class ClassName

  • 使用extends继承。

  • 继承抽象类的子类,需要重写非抽象类的方法。

  • 抽象类不能使用new关键字 Waring: 'xxx' is abstract cannot be instantiated

  • 抽象类中可以写普通方法

  • 抽象方法必须在抽象类中


接口

接口的本质是契约。

  • 声明类的关键字是class,声明接口的关键字是interface

类可以实现接口,通过implements 接口

其中的方法都是public abstract

作用:

  1. 约束
  2. 定义一些方法,让不同的人实现
  3. 接口中所有方法都是public abstarct
  4. public static final 定义常量
  5. 接口不能被实例化,因为接口中没有构造方法
  6. 可以实现多个接口,使用implements
  7. 必须要重写接口中的所有方法。

内部类(奇葩使用)

内部类

内部类就是在类的内部定义一个类,则里面的类相对于外面的类来说是内部类,而外面的类相对于内部的类来说是外部类。

  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类
public class Outer {
	private int id;
    public void out() {
        //外部类;
    }
    public class Inner {
		public void in() {
            //内部类
        }
    }
}
  • 实例化外部类:Outer outer = new Outer();
  • 实例化内部类: Outer.Inner inner = outer.new Inner();

内部类可以访问外部类的方法

外部的内部类:

public class Out {
}
class OutOut {
    //不可以使用public 
}

匿名对象调用方法

new Object().method;
//没有名字初始化类,不用将实力保存到变量中
posted @ 2022-09-18 17:56  winter8  阅读(39)  评论(0)    收藏  举报