继承按照我的理解就是拥有别人所拥有的属性
官方定义:当多个属性中存在相同属性和行为时,将这些内容抽取一个单独的类中,那么多个类无需再定义这些属性,只需继承这个类即可。
其中,多个类称为子类,单独的类称为父类
Java中只能单继承不能多继承
class A extends B{}
写个代码来说说
class Fu{
int age=48;
}
class Zi extends Fu{
int age=18;
void show()
{
System.out.println(age); //输出子类18
System.out.println(super.age); //输出父类48
}
}
class DemoJicheng{
public static void main(String[] args)
{
Zi z=new Zi();
z.show();
}
}
package com.b;
class Fu{
int age=48;
void talk()
{
System.out.println("爸爸会讲中文。");
}
}
class Zi extends Fu{
int age=18;
void show()
{
System.out.println(age); //输出子类18
System.out.println(super.age); //输出父类48
}
}
public class Demo5 {
public static void main(String[] args)
{
Zi z=new Zi();
z.show();
z.talk();
//当子类和父类中的方法名相同时,执行的是子类的方法。
//原因:当名字相同时,子类的方法会覆盖父类的方法,这称为方法的重写
}
}
注意:
1.定义不同
2.作用不同
package com.b;
class Fu{
int age=48;
Fu(){
talk();
System.out.println("父类构造函数");
}
void talk()
{
System.out.println("爸爸会讲中文。");
}
}
class Zi extends Fu{
int age=18;
Zi()
{
//this(); //super和this只能存在一个
super(); // 不写的话会隐藏
System.out.println("子类构造函数");
}
void talk()
{
System.out.println("儿子会讲中文。");
}
}
public class Demo5 {
public static void main(String[] args)
{
new Zi(); //匿名对象,只能调用一次
}
}
/*输出结果
儿子会讲中文
父类构造函数
子类构造函数
*/
//原因,talk()被子类重写
/*执行顺序
1.main函数进栈后,先执行子类的构造函数
2.子类构造函数里,包含了super();所以会跳到父类构造函数
3.父类构造函数里也有个super();会跳到object。但是,object啥也没有执行完弹栈。
4.父类构造函数执行talk();因为takl被重写,会输出子类里的talk();
5.执行完后,输出“爸爸会说中文”,到此父类执行完弹栈
6.子类继续执行输出“儿子会说中文”,执行完弹栈
7.main执行完,弹栈
*/
final可以修饰类,方法,变量
特点:
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁