目录
前言
提示:本文是关于介绍封装,继承(方法的重写与super关键字),抽象类
提示:以下是本篇文章正文内容,下面案例可供参考
一、知识点
1.封装
封装是将数据(属性)和操作数据的方法(函数)捆绑在一起,形成一种对外界不可见的黑盒模型。封装是通过定义类(class)来实现的,其中包含私有(private)字段(属性)和公共(public)方法(行为)。
通俗理解封装,可以想象一下我们日常生活中的胶囊,胶囊将药物封装起来,我们看不到里面的成份,只能通过外部提供的说明书来了解如何使用它。封装意味着不需要知道一个对象内部是如何工作的,只需要知道如何使用它。
代码如下(示例):
public class New {
private String name;
private int score;
public New(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
2.继承
在Java中,继承是一个非常核心的概念,它允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法。
想象一下我们有一个" 水果 "类,它有一些属性(比如颜色,重量)和方法(比如被吃掉,腐烂)。现在,我们要创建一个更具体的类,比如“苹果”,除了水果自己的特性外还有一些自己的特性(比如品种)。这种情况下苹果就可以继承水果的所有属性和方法,同时还可以添加自己的属性和方法。
//父类
class Fruit{
String color;
int weight;
void beeaten(){
System.out.println("水果被吃掉了");
}
}
//子类
class Apple extends Fruit{
String variety;
void makejuice(){
System.out.println("用这个苹果榨汁");
}
}
注意事项:
子类会继承父类所有的实例变量和实例方法
子类不能直接访问父类中私有的成员变量和方法
在Java中,继承的关键字用的是“extends”,表示子类对父类的扩展
Java支持多层继承
一个父类可以同时拥有多个子类
Java只支持单继承,不支持多重继承
(一)方法的重写(Override)
当父类的方法不能满足子类的需求,它允许子类提供特定的实现来覆盖父类的方法。
//父类
class Vehicle{
void move(){
System.out.println("开始运行");
}
}
//子类
class Car extends Vehicle{
@Override
void move(){
System.out.println("点火,挂挡,踩油门,开始运行");
}
}
注意:构造方法,静态方法不能重写,成员变量不存在重写
(二)super关键字
引用当前对象的父类,访问父类的属性和方法。
class Animal{
String sound ="未知声音";
void makesound(){
System.out.println("动物发出声音"+sound);
}
}
class Dog extends Animal {
String sound ="汪汪";
@Override
void makesound(){
super.makesound();
System.out.println("狗发出声音"+sound);
}
}
1.子类继承父类时,不会继承父类的构造方法。只能通过“super”来调用父类指定的构造方法。
2.规定super(形参列表),必须声明在构造器的首行。
3.抽象类(abstract)
只有声明没有具体的实现。必须用abstract关键字来修饰。
代码如下(示例):
//抽象类:动物
abstract class Animal{
String name;
int age;
void eat(){
System.out.println("动物吃东西");
}
//抽象方法:发出声音
abstract void makesound(){
}
//具体类:狗
class Dog extends Animal{
@Override
void makesound(){
System.out.println("狗发出声音");
}
}