java中面向对象编程2

前言:对于类的继承,多态,接口等进行总结,可以使得代码的实现更加多样化,更加方便,不用每一个都去重写一遍

1.对于接口,可以说是继承的一种,只不过更加特殊,因为他要对接口里面的抽象方法进行重写,用实现这个词更加合适,然后需要用到关键词implements.

依旧以学生类为例:

java 复制代码
public interface IStudent {
 public static final String name = "XX";
 public void study();//抽象方法
}
public class Student implements IStudent{
 private int score;
 public Student(int score){
 this.score = score;
 }
 public Student(){
 }
 public void setScore(int score){
 this.score = score;
 }
 public int getScore(){
 return score;
 }
 //实现接口中的抽象方法
 public void study(){
 System.out.println(name+"正在学习!");
 }
}

2.关于1.中的static,final.

1.static表示多个变量,可以同时共用同一个变量,并且都可以修改他,并且该值也是共享的。

2.final表示固定这个量,便不可以再修改

3.对于继承,子类继承父类,需要用到关键词extends,格式为,子类 extends 父类

java 复制代码
public class Student implements IStudent{
 private int score;
 public Student(int score){
 this.score = score;
 }
 public Student(){
 }
 public void setScore(int score){
 this.score = score;
 }
 public int getScore(){
 return score;
 }
 //实现接口中的抽象方法
 public void study(){
 System.out.println(name+"正在学习!");
 }
}
public class UNStudent extends Student{
 //在子类的构造方法中一定要调用一次父类的构造方法
 //父类的无参构造方法会被默认调用
 public void print(){
 System.out.println("学分:"+getScore());
 }
 
 public void study(){

 System.out.println("子类重写父类中的方法");
 }
}

1.继承可以继承父类的所有属性和方法,但是构造函数不会被继承,继承的目的是为了重写父类中的抽象方法,便于后续的优化使用,并且可以使方法功能更加多样,更符合要求

2.如果父类自定义了构造方法,那么子类的构造方法必须调用父类的构造方法,使用关键词super,其他函数也是如此,要先调用其对应的父类的方法

java 复制代码
public void study(){
 super.study();
 System.out.println("子类重写父类中的方法");
 }

注意:方法重写的要求:1.有继承关系的两个类之间

2.返回值类型,方法名,参数类型(个数,顺序)完全一样

3.关于自动转型和强制转型,自动是子类转父类,强转是父类转子类

1.自动转型

java 复制代码
UNStudent un = new Student();
un.study();

这个un对像是父类对象,并且在调用函数时,优先看这个函数是否在父类被定义,其次实现的功能是子类的

2.强转

java 复制代码
UNStudent stu = (UNStudent)un;
stu.print();

这个stu对象是子类对象,并且该转型的前提是,这个un本身是自动转型的产物

4.多态,在调用方法时,可以处理给他父类对象,也可是子类对象,这里便是自动转型的运用。

java 复制代码
Teacher t = new Teacher();
t.teach(un);
相关推荐
灯澜忆梦1 小时前
【Linux】#5 | 文件与目录基础操作命令
java·linux·运维
字节跳动的猫1 小时前
LikeShop 搜索功能优化二开:中文分词、商品权重排序与搜索热词管理
android·java·中文分词
计算机毕设定制辅导-无忧学长1 小时前
《基于微信小程序的校园文化活动报名与管理系统》
java·spring boot·微信小程序·uniapp·校园文化活动报名与管理小程序
靠沿1 小时前
MySQL数据库基础——索引的使用&alter、explain关键字
java·数据库·mysql
9624561 小时前
餐饮 SaaS 优惠券系统架构演进(七)营销定价引擎设计:活动、会员价、优惠券、买赠如何在同一 PriceQuote 中可解释地组合
java·运维·算法
码匠许师傅1 小时前
【C++三方组件】redis-plus-plus:现代 Redis C++ 客户端
java·c++·redis
LMT_Lanmantech1 小时前
MATLAB合规管理:如何避免侵权赔偿和审计风险
开发语言·matlab·信息可视化
ab1237681 小时前
MQTT笔记
java·笔记·mqtt·学习
二宝哥1 小时前
【问题】代理转发到后端使用request.getRequestURL()地址没有端口
java
言乐61 小时前
PythonLOLM自动生成复盘报告模型
开发语言·前端·数据库·人工智能·python