Java面向对象三大特征

Java面向对象三大特征,第1张

Java面向对象三大特征 封装

该露的露,该藏的藏

我们程序设计要求“高内聚 低耦合”。高内聚就是类的内部数据 *** 作细节自己完成,不允许外部干涉;低耦合:暴露少量的方法给外部使用。

封装(数据的隐藏)

通常,应禁用直接访问一个对象中数据实际表示,而通过 *** 作接口来访问,这称为信息隐藏 代码

package com.qiu.bigthree;

public class Packaging {
    
    private String name;
    private char sex;
    private int age;
    //get是获取方法,set是设置数据
    public void setName(String name){
        if(name.length()>=7){//判断名字长度是否输入超过7个
            System.out.println("非人类名字");
        }else{
            this.name=name;
        }

    }
    public String getName(){
        return this.name;
    }
    public void setSex(char sex){
        this.sex=sex;
    }
    public char getSex(){
        return this.sex;
    }
    public void setAge(int age){
        if (age>100||age<=0){
            System.out.println("错误");
        }else{
            this.age=age;
        }

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

}

继承

extends的意思是”扩展“子类是父类的扩展。java中只有单继承没有多继承(看继承关系IDEA快捷键Ctrl+H)子类继承父类就相当于有了父类的所有东西,不包括私有属性,私有属性不能被继承 代码

//父类代码
package com.qiu.bigthree;

public class InheritPerson1 {
    private int money1=1_0000_0000;
    public int moneystudent=1000_0000;
    public void shou(){
        System.out.println("InheritPerson1被继承了");
    }
}
//子类代码
package com.qiu.bigthree;

public class InheritStudent2 extends InheritPerson1{

}

this和super 代码
//父类代码
package com.qiu.bigthree;

public class Inheritsuper1 {
    public String name="我是的inheritsuper1父类";
    public void print(){
        System.out.println("是父类的print方法");
    }
    public Inheritsuper1() {
        System.out.println("我是Inheritsuper1构造方法");
    }
}
//子类代码
package com.qiu.bigthree;

public class Inheritsuper2 extends Inheritsuper1{
    public String name="我是inheritsuper1子类";
    public void demo(String name){
        System.out.println(name);
        System.out.println(this.name);//this是值当前类的属性
        System.out.println(super.name);//super是指父类的属性

    }
    public void print(){
        System.out.println("我是子类print方法");
    }
    public  void demo1(){
        print();//当前类的方法  遵循就近原则,找最近的一个方法
        this.print();//this是调用当前类的方法
        super.print();//super是调用父类方法
    }

    public Inheritsuper2() {
        //默认会有super调用父类的构造器  super()必须要在第一行,不能于this()一起
        super();//调用父类的构造器
        System.out.println("我是Inheritsuper2构造方法");
    }
}


重写

重写:需要有继承关系,子类重写父类的方法

方法名必须相同,参数列表必须相同修饰符:范围可以扩大但不能缩小public—>protected—>defalut—>private抛出的异常:范围只能缩小不能扩大

为什么要重写

父类的功能子类不需要,或者不满足 代码

//父类代码
package com.qiu.bigthree;

public class Overlap1 {
    public void test(){
        System.out.println("我是父类----->test()");
    }
}
//子类代码
package com.qiu.bigthree;

public class Overlap2 extends Overlap1{
    @Override  有功能的注释
    public void test() {
        System.out.println("我是子类----->test()");
    }
}

多态

一个对象的实际类型是确定的,但可以指向对象的引用类型有很多多态的条件

有继承关系父类引用指向子类对象 代码

//父类代码
package com.qiu.polymorphism;

public class Person {
    public String name="我是父类father";
    public void  test(){
        System.out.println("父类father");
    }
}
//子类代码
package com.qiu.polymorphism;

public class Students extends Person{
    public String name="我是子类son";
    @Override
    public void test() {
        System.out.println("子类son");
    }
    public  void eat(){
        System.out.println("我要吃饭");
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5713001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存