1.匿名对象
匿名对象顾名思义就是没有名字的对象
定义格式: new 类名(参数);
好处是可以减少代码量,坏处是只能使用一次,每次new都是开辟了一个新的内存空间
优点:
//创建集合存储学生类型
ArrayList<Student> list = new ArrayList<>();
//添加学生
list.add(new Student("马冬梅",23));
list.add(new Student("秋雅",25));
list.add(new Student("夏洛",29));
list.add(new Student("傻春儿",23));
缺点:
//匿名对象
new Student().setName("马冬梅");
System.out.println(new Student().getName()); //null
2.继承
继承就是类与类之间的关系,子类自动拥有父类的成员
关键字:extends
格式:public class 子类名 extends 父类名
继承的优点:
提高代码的复用性(会提取出来类之间共性的成员变量和成员方法放在父类)
继承时的成员访问顺序:
会优先访问子类的成员,如果找不到就回去父类找
哪些不能被继承:
被private修饰的成员不能被子类直接访问,不能继承构造方法
2.1 this和super的使用
this:当成员变量和局部变量重名时,指向成员变量;
super:优先指向父类的成员变量或方法;
访问构造方法的作用:
this():访问本类的构造方法
super():访问父类的构造方法
只能放在第一行
常见对象的时候用空参的方式,在子类的空参构造方法会有一个默认的super();,会先创建父类的对象
2.2 方法的重写
修饰符相同,返回值类型相同,方法名相同,参数相同,
方法重载:
修饰符相同(修饰符也可以不同,但是访问权限要大于父类的方法权限:public> 空>private) 方法名相同 参数不同,与返回值类型无关
如何检查重写格式是否正确:
在方法上方写上@Override
2.3继承的注意事项:
Java中只支持单继承,但是支持多层继承;
3.抽象类
public abstract class 类名{};
public abstract void 方法名();
关键字:abstract
抽象类不能创建对象(那为什么还要写构造方法? 为了给子类调用父类的构造方法)
抽象类中可以写普通方法,也可以写抽象方法
子类继承抽象父类,必须重写抽象类中的抽象方法,或者子类也时抽象类
抽象方法没有方法体
4.final
请写出final可以修饰的元素,并写出修饰后的含义。
类 变量 方法
最终类 不可以被继承
最终方法 不可以被重写
最终变量 基本数据类型的不可以被修改值
引用类型的不可以被修改地址值