本文共 1924 字,大约阅读时间需要 6 分钟。
1、继承的概念
继承是类和类的关系,是一种“is a”的关系 Java中的继承是单继承2、继承的好处:
子类拥有父类所有的属性和方法; 实现代码的复用; 注意:private修饰的无效****无法继承3、语法规则
class子类extends父类 例:classc Dog extends Animal{ … } Dog是子类,Animal是父类 动物和狗是继承关系。任务注意:
在package包中修改子类的名字,可在菜单栏的refactor中的rename中选择修改; 如果父类中用了private ,那么就算私有,子类不可以调用1、首先创建一个父类,声明属性:
2、然后在创建它的子类Car, 创建类时选择superclass继承它;自动会显示extend函数。如下图:
3、然后在创建一个main函数,创建对象,赋值,再调用方法,就可以继承父类vehicle的所有代码。
1、什么是方法的重写:当子类继承父类的方法不满意时,父类的方法是可以重写的,还是会优先调用子类的方法。
2、语法规则: 返回值类型 参数值类型及个数 方法名 都要与父类继承的方法相同,才叫方法的重写。继承的初始化顺序 1.初始化父类然后再初始化子类 2、先执行初始化对象中属性,再执行构造方法的初始化
初始化顺序见下图:
从父类到子类,从对象、属性到构造方法。最终的。
final可以修饰类、方法、属性和变量 修饰类,则表明该类不允许被继承 修饰方法,则该方法不允许被覆盖(重写) 修饰属性,则该类不会进行隐式的初始化(类的初始化属性必须有值) 或者 在构造方法中赋值(但只能选其一) final修饰变量,则改变量只能赋一次值,即为常量。————————————————————————2019/7/12 未完待续——————————————————————
01super关键字
在对象的内部使用,可以代表父类的对象。
1.访问父类的属性 super.age;
2.调用父类的方法 super.eat(); 在main的method方法中直接输入子类的属性名,就能得到子类属性。 在main的method方法中直接输入子类的方法名。super的应用:子类的构造过程中必须调用其父类的构造方法。
如果子类的构造方法中没有显示调用父类的构造方法,
则系统默认调用父类无参的构造方法。 如果显示的调用构造方法,必须在子类的构造方法的第一行。如果子类的构造方法中既没有显示调用父类的构造方法;
而父类又没有无参的构造方法,则编译出错。 **Object类是所有的类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Objectl类。
Object类中的方法,适合所有的子类。1、toString()方法
在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)可以通过重写 toString()方法表示对象的属性
2、equals()方法
比较的对象是:对象的引用是否指向同一块内存地址。 Dog dog = new Dog()生活中相等的两种情况:
1、昨天我丢了个手机,你手里的手机和我昨天丢的那个手机一模一样。 2、我昨天买了个3星手机,和你手里的手机一模一样,两个对象的值都一样。equals中比较的通常是前者,比较的对象是一个手机。生活中往往比较的是后者。比较两个对象的值是否是一样,所以要进行重写。
编译如下: 上面是第一种情况,new了两次,相当于开辟了两个内存区。判断两个对象是否相同,因为两个对象的内存地址是不相同的,所以两个对象不同。第二种情况,比较两个对象的值。在子类界面中,重新写equals方法,在resource菜单栏中寻找equal可以自动生成需要比较的值的代码。
判断引用的两个值是否相同: if(this == obj)表明两个对象的地址相同 if(obj == null)null 无效的;等于零的 表示另外一个对象是空值。 if(getClass()= obi.getClass())obj.getClass() 表示类对象:年龄,姓名,身高,学历,体重,疾病 这些属性名,变量 方法名,里面的代码是什么。
new一个对象时得到的是类的对象,如obj.getClass()表示类的对象。 如果这个类的对象调用Class方法表示类的对象 类的对象,表示属性值的信息,类的对象数据的信息。转载地址:http://pfeai.baihongyu.com/