Java基础(仅供记录)

本文介绍了面向对象的封装、继承和多态概念,通过代码示例展示了它们在Java中的应用。
摘要由CSDN通过智能技术生成

面对对象三大特性

封装,继承,多态

封装

尽可能隐藏对象的内部实现细节,控制对象的修改,访问的权限

访问修饰符:private 将属性修饰为私有,仅本类可见

安全性,对外部提供一个接口

public class Person {
    //仅本类可见
    private int age;
    
    public void inAge(int age){//封装到类里,减少主函数的判断
        if(age >= 0 && age <= 100)this.age = age;
        else this.age = 18;
    }
    
    public int getAge() {
        return this.age;
    }
}

public class Main {//类
​
    public static void main(String[] args){
       Person peo2 = new Person();
       peo2.inAge(20000);
       System.out.println(peo2.getAge());
    }
}

继承

是类与类之间特征和行为的一种获得

两个类之间的继承关系,必须满足“is a”的关系 IS-A关系

例:Dog is an Animal.

所以狗子可以继承动物的特性

父类的选择

例:狗子是一种动物,一种生物,一种物质

动物 < 生物 < 物质

功能越精细,重合点越多,越接近直接父类 ,也就是动物

功能越粗糙,重合点越少,越接近Object类

我们可以抽取多个具体事物的共性,进而定义父类

父类的属性和方法都可以继承

public class Pet {
    private String name,gender;
    private int love,health;
​
    public void eat(){
        System.out.println(this.name + "正在吃东西");
    }
    //下面进行了封装
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getGender() {
        return gender;
    }
​
    public void setGender(String gender) {
        this.gender = gender;
    }
​
    public int getLove() {
        return love;
    }
​
    public void setLove(int love) {
        this.love = love;
    }
​
    public int getHealth() {
        return health;
    }
​
    public void setHealth(int health) {
        this.health = health;
    }
}

public class Cat extends Pet{//extends从Cat类中继承属性和方法
    public void Playcat(){
        System.out.println("你正在🦌名为" + this.getName() + "的小猫,她很开心");
    }
}

//方法 <-> 函数
public class Main {//类
​
    public static void main(String[] args){
      Cat coke = new Cat();
      coke.setGender("喵喵喵");
      coke.setLove(999);
      coke.setHealth(-114514);
      coke.setName("史");
      coke.Playcat();
      coke.eat();
    }
}

继承的特点

单根性:一个类只可以有一个直接父类,但可以有多个间接父类

传递性:类之间可以多级继承,属性和方法逐级叠加

public class Person {
    String name;
    int age;
}

public class SE extends Person {
    public void code(){
        System.out.println(name + "正在编写代码");
    }
}

public class Stu extends SE{
    double score;
    public void doWork(){
        System.out.println("名为" + name +"的学生正在做编程作业");
    }
}

//方法 <-> 函数
public class Main {//类
​
    public static void main(String[] args){
        Stu baba = new Stu();
        baba.name = "BABA";
        baba.score = 82.3;
        baba.age = 14;
        baba.doWork();
        baba.code();
    }
}

例:Student < SE(software Engineer) < Person

属性的继承

父类所有属性都可以被继承

父类的私有属性能被继承但是不能被访问

子类和父类有同名属性的时候可以通过this,super关键字区分【默认指向子类】

public class SE {
    double score = 80.25;
}

public class Stu extends SE{
    double score = 72.10;
    String name;
    public void pt(){
        System.out.println(score);//先在当前类中找,找不到再去父类中去找
        System.out.println(this.score);//当前类
        System.out.println(super.score);//直接或间接的父类
    }
​
}
//方法 <-> 函数
public class Main {//类

    public static void main(String[] args){
        Stu baba = new Stu();
        baba.pt();
        System.out.println("------");
        baba.score = 82.3;
        baba.pt();
    }
}
/*输出
72.1
72.1
80.25
------
82.3
82.3
80.25
*/

super和this均在Stu这块内存中

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值