1、类
java中数据成员能直接赋值如:
public class
{
private int age=10;
private int number=32;
}
在创建对象是如果不对数据进行赋值,那么,会自动默认初始化为0
数据成员可以直接赋值,但行为不能直接执行,要加方法,如图
加方法
main()方法中可以直接使用类中的protected和public属性,private属性要通过方法访问
2、继承
继承要至少两个类,继承格式 public class 子类类名 extends 父类类名,继承不过是减少代码的赘余,减少代码量,相当于将父类中全部代码在子类中重写一遍
java中只能单继承,不能多继承,但可以多层继承,可以,子类继承父类,父类继承祖父类,那么子类既有父类属性,也有祖父类属性
继承中不能直接访问父类中的private属性,protected和public属性可以直接访问与main()中的一样
子类要用super来调用父类中的带参构造函数
构造调用先父后子
3、多态
多态是建立在继承之上的,new哪个类,那么就执行时就用哪个类的方法,但同名时直接使用父类的数据成员,成员方法与成员变量访问不同,因为成员方法有重写,成员变量没有
父类与子类代码
package inherit;
public class father {
protected String name="DaMing";
public int number=12;
public void display()
{
System.out.println(number);
System.out.println(name);
}
}
package inherit;
public class son extends father{
protected String name="LiMing";
public int number=34;
public void display()
{
System.out.println(number);
System.out.println(name);
}
}
多态时使用左编译右执行原则,一定要父类有的子类才可以直接进行new对象直接访问,如图当父类没get()函数而子类有
可以通过强制转换进行修改
t和b的地址相同,并未开辟新空间占内存
4、抽象类
抽象类用abstract修饰
public abstract class 类名{}
public abstract void display();
抽象类不一定要有抽象函数,但抽象函数一定要该类为抽象类
上图抽象类中无抽象函数,下图当普通类有抽象函数
抽象类不能直接实例化如
public abstract class father{}
father t=new father();是不行的,报错。
继承时,子类要重写父类中的全部抽象函数,或也将子类弄成抽象类,因为,不重写相当于将public abstract void display()抽象函数写在了子类中。
5.接口
接口用关键词interface修饰
public interface 接口名{}
类实现接口用implements 表示
public class 类名 implements 接口名{}
接口不能实例化,要依照多态的方式,通过实现类对象的实例化,类似与多态,同样要重写
接口成员变量是能是常量,默认修饰:public static final,无法进行修改,如当接口中int a=7; 再有一条语句a=3;时就会报错。
接口无构造方法,一个类无父类,默认继承Object类
如 public class r(extends Object) implements 接口名{}。
成员方法只能是抽象类,默认修饰符:public abstract