**
** 一.继承:
继承的概念: ①继承的话,有点像种瓜得瓜种豆得豆的感觉,子类继承父类,子类能够拥有父类的属性和方法(除了private修饰的属性不能拥有) ②java中,继承的关键字是extends,并且java只支持单继承,即一个子类只能继承一个父类。(一个儿子只能有一个爸爸…干爹也不行) 举个例子就是: ①你继承了你父亲的一些外貌特征,同时你也拥有自己的特点。(好像不太形象) ②emmm…例如狗继承了动物,动物就是父类,狗就是子类
继承的优点:①代码能够复用 (就像你继承了你爸的家业,就不用白手起家~就可以直接拿来用…大概这个意思吧)
继承的规则:
语法:class 子类 extends 父类 如: class son extends father{ …… }①子类继承父类,改写继承的方法,这个叫做方法的重写, 重写的话要满足三要素:a、返回值类型相同,b、方法名相同,c、参数类型及个数相同 ②继承的加载顺序,是先初始化父类的再初始化子类的,可以理解为先有爸爸~才可能有儿子。 ③如果是final修饰的类,不可以被继承,final修饰的方法,不可被重写,final修饰的属性也只能赋值一次。 ④如果要调用父类的方法,可以使用(super.方法名),调用父类的属性,可以使用(super.属性名)
二.封装:
封装的概念: ①将类的信息隐藏在类里,要访问,只能通过类提供的方法来进行操作和访问。 ②封装可以使人们更集中关注业务的相关属性封装的优点: ①隐藏了类的实例细节,方便修改 ②只能通过规定的方法进行访问和操作封装的规则: ①定义一个类->②设置他的属性(private)->③提供他的getter/setter方法->④提供他的构造方法,无参或者有参②这个图来自别人大佬的,自己懒得画了,这个图代表了着访问的修饰符,越往下,封装性就越差,通俗来说,就是越往下,就什么阿猫阿狗都可以随便访问你。越往上封装线性越好。
public class Student{ private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } //无参构造函数(默认,不写也有) public BrandDTO() { } //有参构造函数 public BrandDTO(Long id, String name) { this.id = id; this.name = name; } }三.多态:
多态的概念: ①多态主要分为引用多态,和方法多态 a.引用多态:就是在子类继承了父类之后,父类的引用可以指向子类,但是子类的引用不能指向父类,通俗讲,猫是一种动物,猫是子类,动物是父类,但是我们不能说动物是一种猫。这个要注意,就是子类不能引用父类,但是父类可以引用子类。 b.方法多态:例如我们重写了父类的方法,这就是一种方法多态的体现,除了重写,还有一种叫做方法重载,在同一个类中处理不同数据的多个相同方法名的多态手段。还有接口实现方式,抽象类和抽象方法实现方式。多态的优点: ①多态可以使java更灵活,更多样的操作,提高了使用效率。 ②继承是多态的基础,对代码也具有可扩充性。多态的规则: public class Test { public static void main(String[] args) { show(new Cat()); // 以 Cat 对象调用 show 方法 show(new Dog()); // 以 Dog 对象调用 show 方法 Animal a = new Cat(); // 向上转型 a.eat(); // 调用的是 Cat 的 eat Cat c = (Cat)a; // 向下转型 c.work(); // 调用的是 Cat 的 work } public static void show(Animal a) { a.eat(); // 类型判断 if (a instanceof Cat) { // 猫做的事情 Cat c = (Cat)a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog)a; c.work(); } } } abstract class Animal { abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void work() { System.out.println("看家"); } }