第2课第3节_Java面向对象编程_继承性_P【学习笔记】
摘要:韦东山android视频学习笔记
面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一

图一
1、我们在第2课第2节_Java面向对象编程_封装性_P 中定义了persion.我在这代码基础上定义一个学习类,并继承persion类。
class Persion{
private int age;
public void setAge(int age){
if (age < 0 || age > 200)
age = 0;
else
this.age = age;
}
public int getAge(){
return age;
}
}
class Student extends Persion{
}
public class Ext{
public static void main(String args[]){
Student stu = new Student();
stu.setAge(10);
System.out.println(stu.getAge());
}
}
编译运行结果

2、在上面的代码基础上,我们的子类继承了父类,我们可以添加自己的属性还有方法.
class Persion{
private int age;
public void setAge(int age){
if (age < 0 || age > 200)
age = 0;
else
this.age = age;
}
public int getAge(){
return age;
}
}
class Student extends Persion{
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return school;
}
public Student(String school){
this.school = school;
}
}
public class Ext2{
public static void main(String args[]){
Student stu = new Student("ustc");
stu.setAge(10);
System.out.println(stu.getAge());
System.out.println(stu.getSchool());
}
}
编译运行结果

3、子类继承父类的方法和属性都可以进行覆写,我们在子类覆写父类的printInfo方法。
class Persion{
private int age;
public void setAge(int age){
if (age < 0 || age > 200)
age = 0;
else
this.age = age;
}
public int getAge(){
return age;
}
public void printInfo(){
System.out.println("age = " + age);
}
}
class Student extends Persion{
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return school;
}
public Student(String school){
this.school = school;
}
public void printInfo(){
System.out.println("school = " + school + " age = " + getAge());
}
}
public class Ext3{
public static void main(String args[]){
Student stu = new Student("ustc");
stu.setAge(10);
System.out.println(stu.getAge());
System.out.println(stu.getSchool());
stu.printInfo();
}
}
编译运行结果

4、实例化子类对象时,先调用父类的构造方法,再调用子类的构造方法,super()函数在子类中可以指定调用父类构造函数的类型。
class Persion{
private int age;
public void setAge(int age){
if (age < 0 || age > 200)
age = 0;
else
this.age = age;
}
public int getAge(){
return age;
}
public void printInfo(){
System.out.println("age = " + age);
}
public Persion(){System.out.println("Persion()");};
public Persion(int age){
System.out.println("Persion(int age)");
this.age = age;
}
}
class Student extends Persion{
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return school;
}
public Student(String school){
super(5);
System.out.println("Student(String school)");
this.school = school;
}
public void printInfo(){
System.out.println("school = " + school + " age = " + getAge());
}
}
public class Ext4{
public static void main(String args[]){
Student stu = new Student("ustc");
//stu.setAge(10);
System.out.println(stu.getAge());
System.out.println(stu.getSchool());
stu.printInfo();
}
}
编译运行结果

5、抽象类规定子类必须实现的方法,起“模板”作用,缺点不能实例化对象,子类必须覆写全部抽象方法
abstract class Father {
private int money;
public int getMoney() {return money; }
public void setMoney(int money) {this.money = money; }
public abstract void study();
}
class Son extends Father{
public void study() {System.out.println("I am study"); }
}
public class Ext6 {
public static void main (String args[]) {
//Father f = new Father();
Son son = new Son();
son.study();
}
}
编译运行结果:

6、作用:跟抽象类相似,起“模板”作用;子类可以继承多个接口,突破“单继承”的限制
abstract class Father{
private int money;
public int getMoney(){return money;}
public void setMoney(int money){
this.money = money;
}
public abstract void study();
}
interface A{
public static final int i = 10;
public abstract int getNum();
}
interface B{
public static String name = "InterfaceB";
public abstract String getName();
}
class Son extends Father implements A,B{
public int getNum(){return i;}
public String getName(){return name;}
public void study(){
System.out.println("I am study");
}
}
public class Ext6{
public static void main(String args[]){
Son son = new Son();
System.out.println(son.getName());
System.out.println(son.getNum());
son.study();
}
}
编译运行结果:

相关代码存放在github,可以下载https://github.com/zzb2760715357/100ask

第2课第3节_Java面向对象编程_继承性_P【学习笔记】的更多相关文章
- 第2课第4节_Java面向对象编程_多态性_P【学习笔记】
摘要:韦东山android视频学习笔记 面向对象程序的三大特性之继承性: 1.向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法. class Father { private int ...
- 第2课第7节_Java面向对象编程_内部类_P【学习笔记】
摘要:韦东山android视频学习笔记 1.什么是内部类:在类的内部定义一个类,内部类可以访问类的私有属性 class Outer{ ; class Inner{ public void print ...
- 第2课第5节_Java面向对象编程_异常_P【学习笔记】
摘要:韦东山android视频学习笔记 java的异常处理的原则如下: 1.我们先写一个没有对异常处理的程序,在进行除法运算的时候,除数是非零的话,运行时没有问题的,但是除数为零的时候,运行就会有问 ...
- 第2课第2节_Java面向对象编程_封装性_P【学习笔记】
摘要:韦东山android视频学习笔记 面向对象程序的三大特性之封装性:把属性和方法封装在一个整体,同时添加权限访问. 1.封装性的简单程序如下,看一下第19行,如果我们不对age变量进行权限的管控 ...
- 第2课第1节_Java面向对象编程_类的引入_P【学习笔记】
摘要:韦东山android视频学习笔记 1. 面向对象编程的引入,我们先写一个简单的程序输出张三,李四的名字.代码如下,假如,现在我们要在名字前面添加籍贯广东,那样岂不是每个printf语句都得修改添 ...
- 第2课第6节_Java面向对象编程_包和权限_P【学习笔记】
摘要:韦东山android视频学习笔记 1.使用package定义编译的时候存放的位置 package a.b.c.d; public class Package { public static v ...
- 类和对象:面向对象编程 - 零基础入门学习Python037
类和对象:面向对象编程 让编程改变世界 Change the world by program 经过上节课的热身,相信大家对类和对象已经有了初步的认识,但似乎还是懵懵懂懂:好像面向对象编程很厉害,但不 ...
- .net 4.0 面向对象编程漫谈基础篇读书笔记
话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功 ...
- Python 进阶_OOP 面向对象编程_组合与继承
#目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...
随机推荐
- SpringMVC 八大注解
1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...
- mybatis中如何将多个表的查询结果,放入结果集中返回
1.首先需要将resultMap进行改造,为了避免对其他sql的影响建议另外定义一个resultMapExtral,避免id相同, 2.然后在resultMapExtral中添加其它表的字段,若多个表 ...
- python之变量的数据类型(1)int 、bool 、str 及for循环运用
一.变量的数据类型(1) 1.int 类型 int类型是整数,常用的有bit_length() 方法 用来返回一个数的二进制长度 2.bool类型 布尔型只有两个值 True,False 有关类型转换 ...
- springboot 使用常用注解
找到方法封装成json格式 @RestController = @Controller+@ResponseBody //一个组合注解,用于快捷配置启动类,springboot启动主入口 @Spring ...
- 从零开始配置MacBook Pro
购买macbook, 是因为它的效率性.由于我第一次使用macbook,所以按照我开发的习惯和参照了其他人的文章进行配置我的个人mac,希望我的设置对你们也有所帮助 1.基本配置 查找我的Mac 系统 ...
- Codeforces Round #589 (Div. 2)-E. Another Filling the Grid-容斥定理
Codeforces Round #589 (Div. 2)-E. Another Filling the Grid-容斥定理 [Problem Description] 在\(n\times n\) ...
- 《hello-world》第九次团队作业:【Beta】Scrum meeting 1
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...
- python_并发编程——锁
多进程模拟买票~ import time import json from multiprocessing import Process class Show(Process): #查 def run ...
- java 第九次作业
一.题目:利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积. 二.代码 /* 5个形状类分别调用Shape接口: 柱体类中, ...
- GBDT(梯度提升树) 原理小结
在之前博客中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简 ...