JAVA——面向对象——继承extends
Posted 叶不修233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA——面向对象——继承extends相关的知识,希望对你有一定的参考价值。
JAVA——面向对象——继承extends
一、继承的概念
1.继承的特点:
1.构造方法不能被继承(构造方法方法名称必须跟类名一致)
2.一个父类可以有多个子类,一个子类只能有一个父类
3.可以多重继承,也就是A继承B,B继承C
4.私有的属性和方法不能被继承
2.继承的优缺点:
优点:提高代码的复用性,降低程序的冗余度
缺点:继承破坏了封装性,继承提高了代码的耦合度
在项目开发的时候,尽快能的实现项目功能代码的高内聚,低耦合
3.继承时方法的重写:
子类继承父类,当父类的方法无法满足子类的需求时,在子类中对父类的方法重新定义,只改变方法体。
子类对象调用的是被重写之后的方法。
4.重写和重载的区别:
1.位置不同
方法的重载发生在一个类型
方法的重写方法在有继承关系的子类里面
2.写法不同
方法的重载-多个方法方法名相同,参数列表不同
方法的重写-子类重写父类的方法,方法名称和参数列表必须跟父类的方法一致
5.final关键字:
final可以定义常量,常量的值为最终值,不可以被修改
final可以修饰类,被final修饰的类为最终类,没有子类,不可以被继承
final可以修饰方法,被final修饰的方法为最终方法,不能被重写
6.super关键字:
super只能出现在子类中,用来访问父类的成员
super调用父类的构造方法
必须写在子类构造方法的第一行
在子类构造方法的第一行,默认有super()
super调用父类的普通方法和成员属性
在子类的任意方法中通过 super.属性 访问父类的属性
在子类的任意方法中通过 super.方法() 调用父类的方法
super不能访问父类私有的属性和方法
二、继承的举例
例:设计一个父类类叫Animal01,这个类里有三个属性:名字、颜色、年龄。
设计两个子类Dog01、Cat01分别继承父类Animal01的属性和方法
设计一个主类Lesson01,实例化两个子类Dog01、Cat01对象,查看对象的属性和方法。
类Animal01代码:
public class Animal01
//动物有以下几个属性:名字、颜色、年龄
String name;
String color;
int age;
//动物有吃饭的方法(行为)
public void eat()
System.out.println("吃饭。");
//动物有跑步的方法(行为)
public void run()
System.out.println("跑步。");
//构造方法,用于初始化动物的属性
public Animal01(String name,String color,int age)
this.name = name;
this.color = color;
this.age = age;
类Dog01代码:
public class Dog01 extends Animal01
//初始化狗子的属性
public Dog01(String name, String color, int age)
super(name, color, age);
/**
* 方法的重写(子类把父类的方法重写一遍,改变方法体)
* 当父类的方法无法满足子类的需求时,在子类中对父类的方法进行重写
* 子类对象调用的是重写之后的方法
*
*/
//狗子有吃骨头的方法(重写了继承自父类Animal01类中的吃饭方法:重写-方法名一样,方法内容改变)
public void eat()
System.out.println("狗吃骨头");
//狗子有伸舌头跑步的方法(重写了继承自父类Animal01类中的跑步方法:重写-方法名一样,方法内容改变)
public void run()
System.out.println("狗伸着舌头跑步");
//狗子有看家的方法,自身特有方法,非继承的方法
public void lookHome()
System.out.println("看家。");
类Cat01代码:
public class Cat01 extends Animal01
//定义猫猫类特有的属性-性别(非继承而来)
String sex;
//初始化猫猫的属性
public Cat01(String name, String color, int age, String sex)
super(name, color, age);
this.sex = sex;
//猫猫有吃鱼的方法(重写了继承自父类Animal01类中的吃饭方法:重写-方法名一样,方法内容改变)
public void eat()
System.out.println("猫吃鱼。");
//猫猫有走猫步的方法(重写了继承自父类Animal01类中的跑步方法:重写-方法名一样,方法内容改变)
public void run()
System.out.println("猫走猫步。");
//猫猫有抓老鼠的方法,自身特有方法,非继承的方法
public void catchMouse()
System.out.println("抓老鼠。");
主类Lesson01代码:
public class Lesson01
public static void main(String[] args)
//new一个狗狗对象
Dog01 d1 = new Dog01("狗子一号","黑色",3);
//new一个猫猫对象
Cat01 c1 = new Cat01("猫猫一号","白色",3,"母");
//查看属性
System.out.println("狗狗的姓名是"+d1.name+",颜色是"+d1.color+",年龄是"+d1.age);
System.out.println("猫猫的姓名是"+c1.name+",颜色是"+c1.color+",年龄是"+c1.age+",性别是"+c1.sex);
//调用方法
d1.eat();
d1.run();
d1.lookHome();
c1.eat();
c1.run();
c1.catchMouse();
运行Lesson01结果:
以上是关于JAVA——面向对象——继承extends的主要内容,如果未能解决你的问题,请参考以下文章