JavaSE基础语法-面向对象语言的三大特征1-封装、继承

本文详细介绍了Java面向对象编程的三大核心特性:封装如何隐藏类的细节并提供访问控制,继承如何实现代码重用和类间关系,以及方法重写的概念和规则。通过实例演示了如何在Cat类中继承Animal类并重写部分方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaSE基础语法-面向对象语言的三大特征1

1.封装

**封装:**就是将类的某些信息藏在类内部,不允许外部程序直接访问。是通过该类提供的方法来实现对隐藏信息的操作和访问。

优点:

1.只能通过规定的方法访问。

2.隐藏类的实现细节。

3.方便加入控制语句。

4.方便修改信息。

封装后可以向外部程序提供专门的方法,来访问类的私有属性。

this关键字

:表示自身类的对象。

可以引用成员变量和成员方法,但是只能在非静态方法中使用。

public class Demo1 {
     String name;
      int age;
      public Demo1(int age){
          //局部变量age把Demo1中的属性屏蔽
          this.age=age;
      }
       public void SetName(String n){
           if(n<5){
               name=n;
           }
       }
}

2.继承

1.继承

继承是面向对象程序设计中不可缺少的设计思想,是实现代码可重用的根本,是提高代码可扩充性的属性的主要途径。

关键字:extends

Java不支持多继承,只能由一个父类。

继承是新的类吸收其他的类,并扩充新的能力。

子类可以继承父类的所有非私有属性和非私有方法。但是如果不同包,那默认的也不能继承。

c使b的子类(派生类),b是c的父类(基类)。

传递性:c继承b,b继承a,那么c就拥有a和b的所有非私有属性和非私有方法。

Object:如果一个类没有继承任何一个类,那么JVM就会默认给该类继承一个Object类。

2.为何要使用继承?

因为继承与真实世界类似,符合is-a关系的设计,使用继承。

3.代码

Animal类

public class Animal {

    public void  Animal(){
        System.out.println("动物");
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int agel) {
        this.age = age;
    }

    private String name;
    private int age;
    int weight;
}

Cat类

public class Cat extends Animal{
    private String eat;
    public void Cat(){
        System.out.println("猫");
    }
    public void getEat() {
        System.out.println("吃");
    }
    void run(){
        System.out.println("跑");
    }
}

Test类

public class test {
    public static void main(String[] args) {
        XiaoMao mm=new XiaoMao();
        mm.getEat();
        mm.run();
    }
}

4.继承中的构造方法

子类总是先调用父类的构造方法,默认情况下调用父类的无参构造方法。

可以在子类的构造方法的第一行,使用super关键字调父类任意一个构造方法。

原因:子类创建后需要调用父类的方法,所以创建子类对象时父类也需要同时被创建。

5.super关键字

super关键字代表父类的引用,在程序中的主要用途

1.在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。

2.用"super.成员变量名"来引用父类成员变量。

3.用"super.方法名(参数列表)"的方式访问父类的方法。

4.与this的区别,this通常指代当前对象,super通常指代父类。

6.方法的重写

当父类的方法不能满足子类的需求的时候,就会在子类进行方法重写。

重写的规则:

1.方法名相同,参数列表相同。

2.返回值类型相同。

3.访问权限修饰符相同。

4.即与父类结构体完全相同。

注:不能重写静态方法,也不能重写构造方法。

重写的标志:@Override

3.类之间的关系

1.关联关系

对象与对象(运行状态下)之间的联系,类与类(静态状态下)之间的联系。

具体表现:一个类作为另一个类的属性类型存在。

两者之间是关系,“has-a”

关联分为单向和双向:单向A关联B。

双向:A关联B,B关联A。

关联关系的多重性:一对一关联,一对多关联。

解决一对多关联的方案:1.集合 2.数组

public class Person {
    private String name;
    private int age;
    private String sex;
    private Student ljl;//单向关联

    public int getAge(int age){
        this.age=age;
        return age;
    }
}

public class Student {
    String Name;
      public Student(Gun gun) {
        this.gun = gun;
    }
}

2.依赖关系

A类使用到了B类

特点:依赖是具有偶然性的,临时性的,非常弱的,但是B类还是会影响到A类。

两者之间是**"使用"关系,“use-a”**

具体表现:B类作为参数在A类的某个方法中执行。

public class Person {
    private String name;

    public Soldier() {

    }

    public Student(Gun gun) {
        this.gun = gun;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值