这篇“Java继承怎么定义和重写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java继承怎么定义和重写”文章吧。
当多个类存在相同的属性和方法时,可以选择讲这些共同的部分抽象为一个父类,其他的子类就可以继承父类的属性和行为,使得子类对象获得和父类对象同样的属性和方法。
继承的优点
(1)提高代码的复用性。
(2)类与类之间产生了联系,是多态的前提。
通过 extends 关键字,可以声明一个子类继承了一个父类,定义格式:
public class 父类名称{//定义父类的格式
..........
}
public class 子类名称 extends 父类名称{
...........//定义子类格式
}
在父子类继承关系中,如果成员变量重名了,则创建子类对象,有两种访问方式:
(1)直接通过子类对象访问成员变量。
等号左边是谁,就优先用谁,没有则向上找。
(2)间接通过成员方法访问成员变量。
成员方法属于谁,就优先用谁,没有则向上找。
public class Demo02ExtendsField {
public static void main(String[] args) {
Father father = new Father();//创建父类对象
System.out.println(father.numFather);
System.out.println("====================");
Son son = new Son();
System.out.println(son.numFather);//10
System.out.println(son.numSon);
System.out.println("====================");
System.out.println(son.num );//优先子类200
System.out.println("===================");
son.methodSon();//这个方法定义在子类,优先用子类,没有再向上找
son.methodFather(); //这个方法在父类中定义的
}
}
public class Father {
int numFather = 10;
int num = 100;
public void methodFather(){
System.out.println(num);
}
}
public class Son extends Father{
int numSon = 20;
int num = 200;
public void methodSon(){
System.out.println(num);
}
}
注:也可以通过 super 关键字来访问父类中的同名变量;this 关键用来访问本类中的同名变量。
如果父子类中都出现了重名的成员方法,一般使用重写(Override)来进行访问。
方法重写:如果子类出现和父类中一模一样的成员方法(返回类型、方法名和参数列表完全相同),就会出现覆盖效果,也就是重写。即声明不变,重新实现。
重写特点:创建的是谁,就优先用谁的方法;只会向上找父类,而不会向下去找子类。
public class Demo04ExtendsMethod {
public static void main(String[] args) {
Son son = new Son();
son.methodFather();
son.methodSon();
System.out.println("===========");
son.method();
}
}
public class Father {
public void methodFather(){
System.out.println("父类方法执行!");
}
public void method(){
System.out.println("父类方法重名执行!");
}
}
public class Son extends Father {
public void methodSon(){
System.out.println("子类方法执行!");
}
@Override
public void method(){
System.out.println("子类方法重名执行!");
}
}
方法重写的注意事项:
(1)必须保证父子类之间方法的方法名和参数列表一致。
(2)子类返回数据类型必须小于父类的返回数据类型。
(3)子类方法的权限必须大等于父类的权限修饰符。
(4)方法复写前加一个 @Override
是用来检测是否为有效的重写。但这个不是必须的,可写可不写。
扩展:
(1)Object 类是所有类的公共最高父类(祖宗类)。
(2)public > protected > (deafult) > private 【(default)不是关键字,而表示权限修饰符留空。】
public class Demo06Phone {
public static void main(String[] args) {
Phone phone = new Phone();
phone.call();
phone.send();
phone.show();
System.out.println("==========");
NewPhone newPhone = new NewPhone();
newPhone.call();
newPhone.send();
newPhone.show();
System.out.println("==========");
}
}
public class Phone {
public void call(){
System.out.println("打电话");
}
public void send(){
System.out.println("发短信");
}
public void show(){
System.out.println("显示号码");
}
}
public class NewPhone extends Phone {
@Override
public void show() {
super.show();
System.out.println("显示姓名");
System.out.println("显示头像");
}
}
以上就是关于“Java继承怎么定义和重写”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。