网站首页 > java教程 正文
java程序员都知道,java语言是面向对象的语言。面向对象的三大特征:封装性、继承性、多态性。继承是多态的前提,如果没有继承就没有多态。
什么是继承?
继承在程序中的好处是通过继承,让重复的代码或者属性得到共用。
继承主要解决的问题就是:共性抽取 将共同的方法或者属性抽取出一个父类,这样只要继承了父类的子类,代码就可以得到更好的复用性。
继承关系的特点:
1.子类可以有父类的属性方法
2.子类也可有属于自己的属性和方法
3.子类和父类是一个“is-a”的关系
使用代码编写具有继承关系的java类
1.创建一个父类
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个员工的类,做为父类
*/
public class Employee {
public void method(){
System.out.println("父类中method方法");
}
}
2.创建一个子类JavaEmployee
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个员工的子类 java程序员的类
*/
public class JavaEmployee extends Employee{
}
3.创建另一个子类WebEmployee
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个员工的子类 java程序员的类
*/
public class JavaEmployee extends Employee{
}
4.创建一个测试类
package com.whkjkx.day1229.demo1;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 测试类
*
* 定义父类的格式(就是一个简单的java类)
* public class 父类的名称 {
* //...
* }
*
* 定义子类的格式:
* public class 子类名称 extends 父类名称 {
* //...
* }
*
*/
public class Demo01Extends {
public static void main(String[] args) {
//创建员工的子类对象
JavaEmployee javaEmp = new JavaEmployee();
//使用子类对象调用父类的method方法
//虽然子类中什么方法都没有当时可以直接调用父类的方法
javaEmp.method();
//创建另一个员工类的子类对象
WebEmployee webEmp = new WebEmployee();
//虽然子类中没有任务的方法,但是依然可以调用父类中的method方法,可以看到达到了代码互用的方法
webEmp.method();
}
}
5.程序执行结果
继承中成员变量的访问特点
1.创建一个父类
package com.whkjkx.day1229.demo2;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个父类
*/
public class Fu {
int numFu = 1;
int num = 100;
public void methodFu() {
System.out.println(num);
}
}
2.创建一个子类对象
package com.whkjkx.day1229.demo2;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* 定义一个父类
*/
public class Fu {
int numFu = 1;
int num = 100;
public void methodFu() {
System.out.println(num);
}
}
3.创建测试类
package com.whkjkx.day1229.demo2;
/**
* @author 今日头条 科技空间规划
* @version 1.0
* @date 2019/12/29 22:14
*
* 在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问用两种方式:
* 1.直接通过子类对象访问成员变量,等号左边是谁就优先使用该对象中的成员变量
* 如果没有则向上查找调用上一级父类的成员变量,如果上一级也没有则编译报错
* 2.间接通过成员方法访问成员变量,方法定义在哪个类里就调用该类的成员方法,
* 如果没有则向上查找
*/
public class Demo02ExtendsField {
public static void main(String[] args) {
Fu fu = new Fu();
//我们创建的是父类的对象,父类只是一个普通的类,所有只能调用父类的成员方法
System.out.println(fu.numFu);//执行结果 1
//创建一个子类对象
Zi zi = new Zi();
System.out.println(zi.numFu);//执行结果 1
System.out.println(zi.numZi);//执行结果 2
System.out.println("----------------------------");
//优先执行子类的成员方法
System.out.println(zi.num);//执行结果 200
//System.out.println(zi.a);//如果都没有则编译报错
System.out.println("-----------------------------");
//方法定义在哪个类里就调用该类的成员方法,如果没有则向上查找
zi.methodZi();// 执行结果 200
zi.methodFu();// 执行结果 100
}
}
4.运行结果:
猜你喜欢
- 2024-10-03 Java中的继承关系(java中的继承关系是)
- 2024-10-03 Java面向对象之继承(java面向对象继承例题)
- 2024-10-03 「Java入门」十八 面向对象的三大特征之一-继承
- 2024-10-03 [Java基础]09.继承(java基础案例教程第二版)
- 2024-10-03 Java中的继承、封装、多态 #Java开发
- 2024-10-03 Java中的继承与组合(java中继承的概念以及使用继承的好处)
- 2024-10-03 《极简Java新手编程之道》8.1.1 Java语言中实现继承
- 2024-10-03 Java:类与继承(java类与继承抽象类)
- 2024-10-03 Java基础——面对对象-继承(面对对象的特征有哪些方面java基本数据类型有哪些)
- 2024-10-03 你真的熟悉Java中的继承与多态?给你几分钟能回答上来?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)