Java的第八天(类的继承、super关键字的使用、方法的重写)
39.类的继承
描述类的时候,我们如果发现有几个类有重复的属性和方法,我们就可以采用继承的方法来设计
使用extends关键字来继承
语法:
class 子类 extends 父类{
子类属性
子类方法
}
特点:(1)子类会把父类所有属性和方法继承下来(暂时不考虑final)
(2)子类使用extends关键字继承父类的共同属性以外。子类话可以有自己特有的属性和方法;
(3)父类更通用,子类更具体
(4)子类只能获得符类中的非private的属性,如果想要继承就得提供公共的set和get的方法。私有的方法是无法继承下来的;
(5)java中只能做单继承。可以多级继承不能多继承。
class ChineseTeacher{
String name;
private int age;
public void setAge(int myAge){
age=myAge;
}
public int getAge(){
return age;
}
public void speek(){
System.out.println("老师在讲课");
}
}
/*类的继承语法:
class 子类 extends 父类{
子类属性
子类方法
}
*/
class MathTheacher extends ChineseTeacher{
boolean isMarry;
public void mathTeach(){
System.out.println(this.getAge()+"岁的"+name+"教数学");
}
}
public class Teacher{
public static void main(String[] args){
MathTheacher m=new MathTheacher();
m.name="大可爱";
m.setAge(27);
int age=m.getAge();
m.isMarry=true;
m.speek();
m.mathTeach();
}
}
//发现一个问题,当我把主方法放在MathTeacher下创建m的时候编译是没有问题的但是运行Mathteacher却出现错误: 找不到或无法加载主类 MathTeacher,不知道为什么这样不可以
40.类的继承的内存结构
总结:在类的继承结构中,如果创建一个子类的对象,那么在子类的对象内部创建一个父类的对象,如果通过子类的对象访问属性的时候,就会到父类的对象中去查找,如果调用方法的时候也是一样的,如果子类中没有,也会到父类中查找。
42.super关键字的使用
(1)子类通过默认构造器实例化的过程中父类的构造器先被调用,然后再调用子类的构造器,在子类构造器内部默认的调用super();
public JavaTeacher{
super();//隐藏调用父类的构造器
System.out.println("子类构造器被调用");
}
注意:如果父类带有有参数的构造器,并且没有显式的定义父类的默认构造器,默认构造器被覆盖,导致子类的构造器无法通过super()来做调用,就会编译报错,需要显式的定义父类的默认的构造器
(2)如果子类的构造器中调用了父类中的有参数的构造器,默认的super()调用就不会有了,不能在子类的构造器中调用两个super(..);
(3)super(..)调用必须放在方法的第一行
(4)super 可以表示父类的引用,使用super和this区分父类和子类中同名的属性,在子类中访问属性的查找顺序首先在子类中查找指定的属性名字,如果子类中没有该属性,那么就去父类中查找该属性,方法也是一样,但是可以通过super对父类的引用来调用父类的方法。
重点:1.理解super(...)对于父类构造器的调用;2.super表示子类内部的那个父类的对象引用
对比this关键字:1.代表当前类的指定实例的引用;2.可以区分同名的属性和局部变量;3.通过This可以调用同类中的构造器(this(),this(...));4.调用本类里面的属性,this.属性名,this.方法名();
class Teacher{
String name="小白兔";
int age=20;
public Teacher(){
System.out.println("父类构造器被调用");
}
}
class ArtTeacher extends Teacher{
String name="小老虎";
int age=22;
public ArtTeacher(){
//super();//隐藏调用父类的构造器
System.out.println("子类构造器被调用");
}
public void introduce(){
System.out.println(this.name+super.age);
}
}
public class Test{
public static void main(String[] args){
ArtTeacher A=new ArtTeacher();
A.introduce();
}
}
43.方法的重写
在子类继承父类时,子类的方法和父类的方法相同(访问修饰先支付,返回值类型,方法名,参数列表),方法体不同,这种子类的方法将父类的方法覆盖叫重写
重写和重载的区别:
重写:(override)在子类的继承中有相同的方法,唯一布通的就是方法体,一般是父类的该方法满足不了子类的需求所有才发生重写;
重载:(overload)重载是在同一个类中,有着相同的方法名但是参数的数据类型或者参数的个数不同这两个方法就是重载,母的是节省类中命名资源和提高代码的可读性;
(adsbygoogle = window.adsbygoogle || []).push({});- java中继承的理解,super关键字,方法的重写和重载以及注意事项理解
- JAVA基础再回首(六)——父与子的继承、super关键字、方法重写、方法重载
- JAVA第七节-继承,继承中方法重写,继承的初始化顺序,final关键字,super关键字,object类
- JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
- java中的继承,继承中方法的重写,继承的初始化顺序,final关键字,super关键字
- Java学习之面向对象(方法的重写 overwrite,super的使用,继承中的构造方法)
- java第八天---代码块、继承、方法重写、final关键字
- 8 面向对象(制作帮助文档,通过JDK提供的API学习了Math类,代码块,继承(继承子父成员访问特点,super关键字,方法重写))
- java继承中的构造方法及this,super的使用
- java面试题2--方法重写与重载、this和super关键字
- Java 008 面向对象(代码块、继承、方法重写、final关键字)
- java方法重写和super关键字
- java方法重写和super关键字实例详解
- Java面向对象 代码块 继承 方法重写与方法重载的区别 final关键字
- java方法的重载,重写,super,this,final关键字
- Java的super关键字与instanceof运算符使用方法
- Java'笔记(六) 方法重写和super关键字
- Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?
- 带你走进java-第七章.代码块,面向对象特征之继承,继承中的构造方法调用,方法的重载和重写,关键字final
- OC视频笔记2.3(OC继承的使用)2.4(self与super)2.5(方法的重写)