JAVA面向对象三大特征


JAVA面向对象之三大特征
本文参考内容: 牛客网,本文仅为本文学习知识总结。

面相对象三大特征

■封装
隐藏实现细节,再提供特定的方法访问对象内部的信息,可以提高程序的安全性;
■继承
继承于某一个类,就可以直接获得这个类的属性和方法,可以提高程序的复用性;
■多态
程序运行时,在需要父类的地方均可以传入子类的对象,可以提高程序的扩展性。

封装

封装的实现方式
■修饰符
private, protected, public
■访问级别
private -> default -> protected -> public . 小到大

常见办法
1.使用private修饰成员变量,避免它被直接访问;
2.为该成员变量增加赋值、取值方法,使用public修饰这两个方法; setXxx()赋值 getXxx()取值
3.在这两个方法中,可以增加任意的数据处理逻辑。

例子:
Driver.java:

package nowcoder4.part01;
//对age封装
public class Driver {
    private String name;
    private int age;

    public Driver(String name,int age){
        this.name = name;
        this.setAge(age);
    }

    //公有的set方法,用于赋值
    public void setAge(int age){
        if (age<0){
            this.age = 0;
        }else if (age>200){
            this.age = 200;
        }else {
            this.age = age;
        }
    }

    //公有的get方法,用于取值
    public int getAge(){
        return this.age;
    }

    //通常所有的属性都做封装
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

Game.java:

package nowcoder4.part01;
//封装
public class Game {
    public static void main(String[] args) {
        Driver d = new Driver("perth",-10);
        System.out.println(d.getName());
        System.out.println(d.getAge());

        d.setAge(-20);
        System.out.println(d.getAge());
        d.setAge(20);
        System.out.println(d.getAge());

        d.setName("plan");
        System.out.println(d.getName());
    }
}

在这里插入图片描述

继承

继承的详细规范
1.Java采用extends关键字实现继承,实现继承的类叫子类,被继承的类叫父类;
2.任何类都只能有一个直接的父类,和无数个间接的父类,多个类可以继承于同一个父类;
3.若一个类没有显示指定父类,则这个类默认继承于java. lang . object;
另外,从父类角度看,父类派生了子类,但从子类角度看,是子类扩展(extends) 了父类。

重写

什么是重写

在子类中,定义与父类同名的方法,用来覆盖父类中这个方法的逻辑,叫做重写。
重写的规范
1.子类方法的名称、参数列表与父类相同;,
2.子类方法的返回类型与父类相同或更小;
3.子类方法声明的异常与父类相同或更小;
4.子类方法的访问权限与父类相同或更大。

重载与重写

名称
重载英文是overload,重写英文是override。
作用
1.重载发生在同一个类的多个同名方法之间,让代码便于调用;
2.重写发生在子类与其父类的同名方法之间,让代码易于复用。
父类与子类之间也存在重载,即在子类中定义出与父类名称相同、参数列表不同的方法。

实例:

父类:Vehicle

package nowcoder4.part02;

public class Vehicle {
    String brand;
    void run(){
        System.out.println(brand+"跑得真快!");
    }

    Vehicle myself(){
        return this.myself();
    }
}

子类:Airplane

package nowcoder4.part02;

public class Airplane extends Vehicle{

    @Override   //注解标记,说明是重写
    void run() {
        System.out.println(brand+"飞机非的真快!");
    }

    @Override
    Airplane myself() {  //这里子类的返回值类型是比父类小
        return this;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值