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的主要内容,如果未能解决你的问题,请参考以下文章

面向对象类方法

JAVA面向对象,继承、封装、多态

Java面向对象之继承

举例说明java面向对象的封装继承多态

JAVA 面向对象---继承

Java面向对象之继承