张效详java就业培训教程学习笔记(三)

[b]lesson4(A上):[/b]
子类继承父类中的所有成员变量和成员方法,但不继承父类中的构造方法.

在设计类时,如果没有定义构造方法,在产生类的实例对象时,系统会自动调用一个无参的构造方法,但是如果定义了一个构造方法,系统就不再自动调用那个无参的构造方法,而是调用自定义的构造方法.

如果子类的构造方法中没有显示的调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法.


class Person{
public String name;
public int age;
public Person(){

}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void getInfo(){
System.out.println("name="+name+",age="+age);
}

}

class Student extends Person{
public String school;
public Student(){
//super();
//super("zhange",15);
System.out.println("fdfd");
}

public void study(){

}
}

class TestStudent{
public static void main(String args[]){
Student a=new Student();
a.getInfo();
}
}


******子类对象的实例化过程 23% 有点疑虑

覆盖方法时,子类方法的访问权限不能比父类的弱.

final 类型的常量只能在定义的时候赋初值,或者在构造方法中赋初值.(注意要在所有构造方法中都要对它赋值)

接口是常量与抽象方法的集合.接口是一种特殊的抽象类,只包含常量和方法的定义,没有变量与方法的实现.
接口中的成员都是public访问类型的,接口里的变量默认是用public static final标识的.
对象的类型转换.
子类对象可以自动转换为父类,父类转换为子类必须使用强制转换.
instanceof操作符可以用它来判断一个实例对象是否属于一个类.


class A{
public void func1(){
System.out.println("A func1 is calling");
}
public void func2(){
call func1();
}
}

class B extends A{
public void func1(){
System.out.println("B func1 is calling");
}
public void func3(){
System.out.println("B func3 is calling");
}
}

class C{
public static void main(String args[]){
B b=new B();
callA(b);
A a=b;
callA(new A());
}

public static void callA(A a){
if(a instanceof B){
B b=(B)a;
b.func1();
b.func2();
b.func3();
}
a.func1();
a.func2();
}
}

匿名内部类(94%)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值