传递
定义一个类S,定义方法A,方法B,方法A中引用方法B,
新建类S的对象Q,
调用Q.A
实现数据传递。
封装
设计两个接口方法,
一个接口方法为seter,一个接口方法为geter
set可以对对象的属性进行条件控制
geter为return即可
继承
父类和子类
子类可以extend父类后添加自己的属性和方法
多态
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
多态的引用

if (o instance dog){}
接口


New一个类的的时候,
1. 执行父类的static成员和static代码块(按照先后顺序)
2. 执行子类的static成员和static代码块(按照先后顺序)
3. 执行父类的非static成员字段变量和代码块的初始化(按照先后顺序)
4. 执行父类的构造方法
5. 执行子类的非static成员字段变量和代码块的初始化(按照先后顺序)
6. 执行子类的构造方法
===================================
public class DuckBase {
public DuckBase(){
System.out.println("这是基类");
}
}
===================================
public class DuckA extends DuckBase{
public DuckA(){
System.out.println("这是类A");
}
void aa(){
System.out.println("aa");
}
}
===================================
public class DuckB extends DuckA {
public DuckB(){
System.out.println("这是B的构造函数");
}
public DuckB(String var){
System.out.println(var) ;
}
void bb(){
System.out.println("bb");
}
public static void main(String []args){
System.out.println("1") ;
DuckBase base = new DuckBase();
System.out.println("2") ;
DuckBase base1 = new DuckA();
System.out.println("3") ;
DuckBase base2 = new DuckB("这是基类B");
System.out.println("4") ;
DuckA b = new DuckB();
System.out.println("5") ;
b.aa();
}
}
=========================
=========================
1.前提:A是B的父类。
A a = new B();
这一句的过程是这样的,
1)创建一个类A的引用a
2)创建一个类B的实例
3)把类B的引用赋值给a
因为A是B的父类,所以,赋值成功。
如A有两方法:m1()m2()
B重载了其中一个m2
那么a.m1()执行A.m1(),
a.m2()执行B.m2()
2.
A a = new B();
需要人类(A)的一个对象,给了一个男人 new B()
B a = new B();
需要男人类(B)的一个对象,给了一个男人 new B()
3.
B继承于A 那么
A a = new B();
实例a被显式的声明成A的实例,所以任何用实例a去调用B类的方法都是不能通过编译的,尽管实例a本身确实有类B的方法,但是被隐藏了
B a = new B();
那么这个实例a既可以调用A类的方法,也可以调用B类的方法。
另外值得一提的是,如果B类中有重写A类的方法,而你用了
A a = new B();
这种方式定义了实例a,那么如果你调用了类A中被类B重写的方法,那么得到的效果是你调用了这个已经被B重写的方法。
利用super()继承父类带参构造函数:
=========================
abstract class t1
{
private String name;
public String getName(){
return name;
}
public t1(String theName){
System.out.println("t1构造");
name = theName;
}
}
=========================
public class t2 extends t1 {
public t2(String theName) {
super(theName);
}
public static void main (String[] args){
t1 tt = new t2("666");
System.out.println(tt.getName());
}
}

浙公网安备 33010602011771号