java面向对象(五)

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、面向对象特征二 ------继承性

1.继承性的好处

1.减少了代码的冗余,提高了代码的复用性。

2.便于功能的扩展。

3.为之后多态性的使用,提供了前提。

2.继承性的格式 class A extends B{}

复制代码
A:子类、派生类、subclass
B:父类、超类、基类、superclass
复制代码
  2.1 体现:一旦子类A继承父类B以后,子类A就获取了父类B中声明的结构,属性 方法。 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。
复制代码
  只有因为封装性的影响,使得子类不能直接调用父类的结构而已。
复制代码
  2.2 子类继承父类之后,还可以声明自己特有的属性或方法,实现功能的扩展。子类和父类的关系,不同于子集和集合的关系。
复制代码
  extends :延展、扩展。

3.Java中关于继承性的规定。

复制代码
  1.一个类可以被多个子类继承。
复制代码
  2.Java中类的单继承性,一个类只能有一个父类。
复制代码
  3.子父类是相对的概念。
复制代码
  4.子类直接继承的父类,称为 :直接父类。间接继承的父类称为:间接父类。
复制代码
  5.子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法。

4.java.lang.Object类

复制代码
   1.如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类。
复制代码
   2.所有的java类(除java.lang.Object类之外),都直接或间接的继承于java.lang.Object类。
复制代码
   3. 意味着,所有的java类具有java.lang.Object类声明的功能。

5.如图所示

二、代码

1.父类的父类 Creature

代码如下(示例):

c 复制代码
public class Creature {

	public void breath()
	{
		System.out.println("呼吸");
	}
}

2.父类 Person

代码如下(示例):

c 复制代码
public class Person extends Creature{
	String name;
	private int age;
	/**
	 * @return the age
	 */
	public int getAge() {
		return age;
	}
	/**
	 * @param age the age to set
	 */
	public void setAge(int age) {
		this.age = age;
	}
	public Person()
	{
		
	}
	public Person(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	
	public void eat()
	{
		System.out.println("吃饭");
	}
	
	public void sleep()
	{
		System.out.println("睡觉");
	}
	
}

3.子类 Studengt

cpp 复制代码
public class Studengt extends Person{
	//String nameString;
	//int age;
	String majorString;
	
	public Studengt() {
		
	}
	public Studengt(String name,int age,String majorString) {
		this.name = name;
		//this.age = age;
		setAge(age);
		this.majorString = majorString;
	}
	/*
	 * public void eat() { System.out.println("吃饭"); }
	 * 
	 * public void sleep() { System.out.println("睡觉"); }
	 */
	
	public void study()
	{
		System.out.println("学习");
	}
}

4.测试类ExtendsTest

cpp 复制代码
public class ExtendsTest {
public static void main(String[] args) {
	Person p1 = new Person();
	//p1.age = 1;
	p1.eat();
	
	Studengt s1 = new Studengt();
	s1.sleep();
	s1.setAge(18);
	s1.breath();
	System.out.println(s1.getAge());
	
	Creature creature = new Creature();
	creature.breath();

}
}

相关推荐
冬栈程序设计4 分钟前
Springboot宿舍管理系统【670099】 -附源码(开箱即用)
java·毕业设计·springboot·课程设计·程序设计·大作业
2601_9622845012 分钟前
北京Java全栈开发培训 Web前端开发 软件测试就业培训班
java·软件测试·web前端·全栈开发·就业培训
葡萄城技术团队33 分钟前
工业数据可视化:使用活字格 AIcoding + Three.js 构建轻量化三维设备监控大屏
开发语言·javascript·信息可视化
qiaosaifei36 分钟前
JAVA老项目中有大量的类名_编译时报找不到符号错误
java·开发语言
聪明蛋子哟40 分钟前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python
文子越来越强1 小时前
【双因子认证】拦截注解@MFACheck 接入指南(其他微服务如何用)
java
一晌小贪欢1 小时前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公
ZGG0031 小时前
线程池详解:从 7 大参数到生产避坑
java·数据库·后端
迪康Defender1 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
京师20万禁军教头2 小时前
47-常用类-八大包装类(Wrapper Classes)
java