extends 继承
如何使用?
class A{ int x; public void setX(int x){this.x = x;} public int getX(){return x;} public String toString(){return "A类的实例,x属性的值是:"+x;} public A(){x=10;} public A(int x){this.x = x;} } //B类继承A类,A类是B类的父类(superClass,BaseClass) //B类是A类的子类(派生类,subClass, childClass) class B extends A{ int y; public void setX(int x){this.x = x;} public int getX(){return x;} }
作用:
子类继承父类所有属性和方法,构造器不能继承.
new子类对象时,总是先new父类对象。
好处:
1.代码复用
2.子类可以扩展新的属性和方法
构造器不能继承但new子类对象时,总是先new父类对象。
默认调用父类的无参构造器,
如果要显式调用父类指定构造器,使用super([参数])调用.
super()必须注意:在构造器中只能是第一行代码,并且只能用一次。
class A{ public A(int x, int y, String str){...} } class B{ public B(){ super(10,20,"abc"); } public B(int x, int y){ super(x,y,"abc"); } public B(int x,int y, String s){ super(x,y,s); } } public class Pointer2D{ int x,y; public Pointer2D(){} public Pointer2D(int x, int y){ this.x=x; this.y = y; } main{ Pointer2D p1 = new Pointer2D(); Pointer2D p2 = new Pointer2D(10,20); } } public class Pointer3D extends Pointer2D{ int z; }
static 与对象无关
类的组成成员
class 类{
对象属性成员
类属性
代码块
静态代码块
构造器
非静态方法
静态方法
内部类
}
======================================================
extends 继承
如何使用?
class A{ int x; public void setX(int x){this.x = x;} public int getX(){return x;} public String toString(){return "A类的实例,x属性的值是:"+x;} public A(){x=10;} public A(int x){this.x = x;} } //B类继承A类,A类是B类的父类(superClass,BaseClass) //B类是A类的子类(派生类,subClass, childClass) class B extends A{ int y; public void setX(int x){this.x = x;} public int getX(){return x;} }
作用:
子类继承父类所有属性和方法,构造器不能继承.
new子类对象时,总是先new父类对象。
好处:
1.代码复用
2.子类可以扩展新的属性和方法
构造器不能继承但new子类对象时,总是先new父类对象。
默认调用父类的无参构造器,
如果要显式调用父类指定构造器,使用super([参数])调用.
super()必须注意:在构造器中只能是第一行代码,并且只能用一次。
super关键字,除了可以调用在构造器中调用父类构造器之外,还可调用父的属性和方法.
this关键字:
1.this([参数列表])表示当前类的构造器,super([参数列表])表示父类的构造器.
2.this.属性或this.方法()表示引用当前类的对象的属性或方法;super.属性或super.方法()表示引用父类的对象的属性或方法;
class Demo{ int x; public Demo(){ super(); this(0); //调用下面带参的构造器,作用类似于this.x=0; } public Demo(int x){ this.x = x; } } //重载,重写,抽象类,终态类
cl ass A{ String s="class A"; void show(){ System.out.println(s); } } class B extends A{ String s="class B"; void show() { System.out.println(s); } } public class TypeConvert{ public static void main(String args[]){ B b1; B b2=new B(); A a1,a2; a1=(A)b2;子类强制转换成父类是 方法是父类,属性是子类的 a2=b2; System.out.println(a1.s);class A a1.show();class B System.out.println(a2.s);class A a2.show();class B b1=(B)a1;父类强制转换成子类是方法重写了,属性重写 System.out.println(b1.s);class B b1.show();class B System.out.println(b2.s);class B b2.show();class B } }
class A
class B
class A
class B
class B
class B
class B
class B