乱窜的王某人

导航

 

传递

定义一个类S,定义方法A,方法B,方法A中引用方法B,

新建类S的对象Q,

调用Q.A

实现数据传递。

 

封装

设计两个接口方法,

一个接口方法为seter,一个接口方法为geter

set可以对对象的属性进行条件控制

geter为return即可

 

继承

父类和子类

子类可以extend父类后添加自己的属性和方法

 

多态

多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

 

多态的引用

if (o instance dog){}

 

接口

 

 

 

就是在继承中,new出的子类依次执行父类的无参构造方法。

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());
}
}

 

posted on 2017-02-13 16:21  乱窜的王某人  阅读(124)  评论(0)    收藏  举报