day01
- 构造方法
方法名和类名相同;没有返回值类型;void也没有;
作用:为类中的成员变量赋值。
格式:无参构造:public 类名(){};
有参构造:public 类名(参数列表){xxx} - 成员方法的分类
有无返回值类型;有无参数列表。 - 成员变量名称和局部变量名称一致的情况,如何访问
先在局部位置找,存在就使用;
再在成员位置找,存在就使用; - static关键字的特点
1)随着类的加载而加载,
2)优先于对象;
3)能被多个对象共用;
4)访问格式:类名.成员变量;类名.成员方法 - 静态成员变量和成员变量的区别?
1)写法格式不同:
成员变量:数据类型 变量名;
静态变量:static 数据类型 变量名;
2)在内存中的位置不同:
成员变量:堆内存中;
静态变量:方法区中,静态区域内;
3)生命周期不同:
成员变量:随着对象的创建而存在,随着对象创建完毕,等待垃圾回收器回收;
静态变量:随着类的加载而加载,类只加载一次,static静态变量也只加载一次;
4)初始化不同:
成员变量:通过构造方法或者setxxx(xxx)进行赋值;
静态变量:通过类名.变量名=0进行赋值;
day02
- 代码块
局部代码块:{
}
静态代码块:static{
}
构造代码块:{
}
构造方法代码块:public 类名(){
}
优先级:静态代码块>构造代码块>构造方法代码块
- 继承
a.将多个类中共有的特性抽取到一个独立类中,独立类与其他类之间的关系就是继承;
b.继承的好处:
1.提高了代码的复用性 ;
2.提高了代码的维护性;
3.类与类之间产生关系。
c.继承的特点:
1.在Java中只支持单继承;
2.虽然在Java中不支持多继承,但是支持多层继承。
- 继承中的构造方法的访问问题
继承中,如果父类中提供了有参构造没有提供无参构造方法,那么子类会出现什么情况,如何解决?
结果:
子类的所有构造方法都会报错
解决:
1.手动在父类中添加无参构造方法;
2.在子类构造方法中显示访问父类的有参构造方法,在子类构造方法中的第一句加super(xxx);
3.在子类的有参构造中用this()调用子类的无参构造,然后在子类的无参构造中访问父类的有参构造super(xxx);
- 继承中,成员变量的访问
继承中,子父类成员变量名称一致的时候如何访问?
成员变量名称一致的情况:
1)现在子类的局部位置找,如果存在就使用
2)如果局部位置找不到,那么就需要在本类的成员位置中找,如果存在,就使用
3)本类的成员位置找不到,那么就需要在父类的成员位置中找,有就使用!
4)如果父类的成员位置找不到,那么就报错,没有这个变量!
- this和super的区别
1.this.变量名访问该类中的成员变量
super.变量名访问父类中的成员变量;
2.this( )访问该类中的无参构造方法,
super( )访问的是父类中的无参构造方法;
3.this.方法名( )访问该类中的成员方法,
super.方法名( )访问父类的成员方法;
4.this(xxx)访问的是该类中的有参构造方法,
super(xxx)访问的是父类中的有参构造方法;
day03
- 多态
一个事物在不同时刻体现的不同形态:在内存中数据类型
前提条件:
1)类与类之间必须是继承关系;
2)存在方法重写;
3)必须有父类引用指向子类对象; - 多态的成员访问特点
访问成员变量时:编译看左,运行看左;
访问成员方法时:编译看左,运行看右;
访问静态方法时:编译看左,运行看左;
访问构造方法时:先让父类初始化,再让子类初始化; - 多态的好处以及多态的弊端
好处:
1)可以提高代码的维护性;
2)可以提高代码的扩展性。
弊端:
不能访问子类的特有功能。 - 方法重写
方法重写:在子类中出现和父类一模一样的方法声明,并且子类的方法将父类的方法覆盖了,这种情况称为方法重写 - Overload和Override的区别
区别:
方法重载:在定义方法时出现,与返回值无关,方法名相同,参数列表不同:参数类型相同,参数个数不同;参数个数相同,参数类型不同;
方法重写:在继承中使用,子类要使用自己特有的功能,需要将父类的功能覆盖了,在子类中出现和父类中一模一样的方法声明;
day04
- 抽象类
如果一个类中存在抽象方法,那么将这个类定义为抽象类。
特点:
a.不能直接实例化,但是可以通过子类间接实例化;
b.抽象类会强制子类对抽象类中的抽象方法进行重写; - 抽象类的成员特点
1)成员变量:既可以是常量也可以是变量;
2)成员方法:即可是抽象方法,也可以是非抽象方法;
3)构造方法:即可有无参构造方法,也可以有有参构造方法。 - abstract和哪些关键字冲突
final、private、static - final关键字的特点
1) final修饰类,类不能被继承;
2)修饰成员方法,该方法不能被重写;
3)修饰成员变量,此时变量是常量。
day05
- 接口
针对某个具体事物提供的一种扩展功能;
格式:interface 接口名{}
接口名:大驼峰命名法。
特点:
1)接口中的方法必须是抽象方法;
2)接口和它的子实现类之间的关系:实现(implements)关系;
3)接口不能直接实例化,只能通过创建子实现类对象间接实例化。 - 接口的成员特点
1)成员变量:成员变量只能是常量,默认修饰符:public static final;
2)成员方法:只能是抽象方法,默认修饰符:public abstract;
3)构造方法:没有。 - 接口如何实例化
接口实例化需要通过创建子实现类对象间接进行访问;
//接口
interface Inter {
public static final int age=21;
public abstract void method();
}
//子实现类
public class InterImpl implements Inter{
@Override
public void method() {
System.out.println("接口真牛逼");
}
}
//测试类
public class Test {
public static void main(String[] args) {
Inter i=new InterImpl();
i.method();
}
}
- 抽象类和接口有什么区别?
1.成员区别:
a.成员变量:抽象类:成员变量既可以是常量也可以说是变量;
接口:成员变量只能是常量;
b.成员方法:抽象类:成员方法可以是抽象方法也可以是非抽象方法;
接口:成员方法只能是抽象方法;
c.构造方法:抽象类:既可以是无参构造方法也可以是有参构造方法;
接口:没有构造方法;
2.关系的区别:
a.类与类之间:是继承关系(extends);只能单继承,不能多继承,但可以多层继承;
b.类与接口之间的关系:是实现关系(implements);可以多实现接口;
c.接口与接口之间的关系:继承关系(extends);既可以单继承,也可以多继承。
3.设计理念的区别:
抽象类:将一个事物抽象化,体现的是一种“is a”关系;
接口类:给事物提供额外的扩展功能,这个功能是通过后天努力实现的,体现的是一种“like a”关系。