类的继承

在编程时,我们经常遇到一些属性方法有部分相同或类似的类,如果我们每次都要重新定义一个这样的类,难免会觉得麻烦。为了避免这样,我们就用到了继承。由此也引出了使用继承的原因,其一,继承可以提高代码的重用性;其二,继承可以提高程序的扩展性。

1、继承的格式
关键字 extends
语法格式:
public class 类名(子类名、超类名、派生类名) extends 类名(父类名、基类名) { }

2、子类继承父类的属性和方法
(Java中的访问修饰符:
默认的 受保护的 包
private 类的{}
protected 受保护的 包
public 在一个项目中)
子类继承到了父类所有的属性和方法。但是并不是所有的属性和方法都能被子类调用。
有如下两种情况:
1)、子类和父类同包:
公有的、受保护的、默认的属性和方法可以被子类的对象直接使用。

2)、子类和父类不同包:
公有的属性和方法可以被子类的对象直接调用。
受保护的属性和方法可以在子类的类中直接调用。

3、方法重写
1)、条件:
a、必须要存在继承关系
b、方法的返回值数据类型、方法名、参数个数、参数类型、参数顺序必须要完全相同
c、子类重写的方法访问修饰符可以大于或者等于父类方法的访问修饰符范围。

2)、调用重写的方法
a、判断new的对象是否是子类的
b、优先执行子类的方法,没有才会执行父类的方法。

4、自动转型
要实现自动转型必须要存在继承关系。
格式:
父类名 对象名 = new 子类构造方法();
Student stu = new UNStudent();
格式二:
public 返回值数据类型 方法名(父类名 对象名){
对象名.调用父类中定义过的方法();
}
父类名 对象名A = new 子类构造方法();
子类名 对象名B = new 子类构造方法();
方法名(对象名A);
方法名(对象名B);
自动转型引起编译错误的原因是:
1)、编译机制的问题。
2)、Java在编译的的时候,只会根据对象名的类型进行编译。
会将你调用的方法,拿到父类中进行一一比较,如果发现没有在父类中定义的方
法,则直接抛出编译错误。
运行:还是会优先执行子类的方法,如果子类没有,才会执行父类的。

5、多态
多态是由Java的方法重载,继承、方法重写,自动转型等技术点的组合。

public class Student {
private String name;//姓名属性
int score;//学分属性
public int age;
// 不带参数的构造方法
public Student(){
}
//带字符串参数的构造方法
public Student(String n){
name = n;
}
//带字符串参数和整型参数的构造方法
public Student(String n,int s){
name = n;
score = s;
}
//设置姓名属性值的方法
public void setName(String n){
name = n;
}
//获取姓名属性值的方法
protected String getName(){
return name;
}
void setScore(int s){
score = s;
}
private int getScore(){
return score;
}
//定义学习方法
public void study(){
score++;
System.out.println(name+"正在学习中,学分是"+score);
}
}

//继承自Student
public class UNStudent extends Student {
private String number;//学号属性
//玩的方法
public void play(){
System.out.println(getName()+"在玩游戏!");
}
//重写的学习方法
public void study(){
System.out.println(getName()+"的学习方式不同啦!");
}
}

public class Manager {
//主函数
public static void main(String[] args) {
UNStudent un = new UNStudent();
un.setName("小刚");
un.play();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值