Java三大特性

Java的三大特性是封装(Encapsulation),继承(Inheritance)和多态(Polymorphism)。

封装(Encapsulation)是指将数据和方法封装在类中,使得类内部的数据和方法对外部不可见,只能通过类提供的接口进行访问和操作。封装可以提高代码的安全性和可维护性,同时也能隐藏内部的实现细节,使得类的使用者只需要关注类提供的接口,而不需要了解其具体实现。

封装的特点:

【1】数据隐藏:类的数据只能通过类提供的接口进行访问,对外部不可见。

【2】接口访问:类的接口是公开的,可以被其他类访问和调用。

【3】安全性:封装可以提高代码的安全性,防止外部的错误操作对类的数据产生影响。

【4】可维护性:封装可以隐藏内部的实现细节,使得类的实现可以更加灵活和易于维护。
继承(Inheritance)是指子类可以继承父类的属性和方法,同时也可以扩展父类的功能。继承可以提高代码的重用性和可扩展性,同时也可以使代码更加简洁和易于理解。

继承的特点:

【1】代码重用:子类可以继承父类的属性和方法,避免了代码的重复编写。

【2】功能扩展:子类可以扩展父类的功能,使得代码更加灵活和可扩展。

【3】继承层次:多层继承可以形成继承层次结构,使得代码的组织和管理更加清晰。
多态(Polymorphism)是指同一个方法可以被不同的对象调用,产生不同的结果。多态可以提高代码的灵活性和可扩展性,同时也可以使代码更加简洁和易于理解。

多态的特点:

【1】方法重载:同一个方法名可以定义多个不同的参数列表,产生方法重载。

【2】方法重写:子类可以重写父类的方法,产生方法重写。

【3】向上转型:子类对象可以向上转型为父类对象,使得同一个方法可以被不同的对象调用。

【4】运行时绑定:方法调用的具体实现是在运行时动态绑定的,而不是在编译时静态绑定的。

Java代码示例:

import java.util.Scanner;

/*
修改Goods类,变成Java开发的规范
 */
public class MyGoods {
    //第一,满足封装特性,所有变量全部私有private
    private String name;
    private String peison;
    private int num;
    private double price;
//    private String big_pic;
    private String small_pic;
    //自动产生一个无参构造
    public MyGoods() {
    }

    //自动产生全参构造函数,主类main函数调用这个类直接传入参数,不需要在主类main中产生init方法
    public MyGoods(String name, double price,String peison, int num) {
        this.name = name;
        this.peison = peison;
        this.num = num;
        this.price = price;
    }
    //正常逻辑中的方法
    //显示所有的商品的方法show
    public void show(){
        //首先显示商品
        System.out.println(this.name);
        System.out.println(this.num);
        System.out.println(this.price);
        System.out.println(this.peison);
        //用户调整数量
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入购买商品的数量");
        //这里的商品数量,如果出错,要继续输入
        while(true){
            try{
                //输入的数量直接给this.num,this指示的当前对象
                this.num=scanner.nextInt();
                //成功后退出循环
                break;
            }catch(Exception e){
                System.out.println("需要重新输入商品数量,你输入的有问题,请输入整数");
            }
        }
        System.out.println("*********************");
        System.out.println("1------立即购买");
        System.out.println("2-------加入购物车");
        System.out.println("*********************");
        System.out.println("请选择你的购买意向,输入序号");
        try{
            //scanner是本类中本函数的全局变量,可以在这里使用
            int no=scanner.nextInt();
            switch(no){
                case 1:
                    this.buy();
                    break;
                case 2:
                    this.addcar();
                    break;
            }
        }catch(Exception e) {
            //如果用户输入错误,默认选择立即购买的方法
            this.buy();
        }

    }
    //立即购买的方法
    public  void buy(){
        System.out.println("你购买了这个商品");
        //这里调用Order订单类的make_order()方法,在这里产生一个空方法,在Order类中重写
        this.make_order();
    }
    //加入购物车的方法
    public  void addcar(){

        System.out.println("你已经把商品加入购物车");
    }
    //protected修饰,需要了类继承后进行重写
    protected void make_order(){
        //代码是由订单类做的,不是由Goods模块做的,它只能由Order的开发人员实现
    }

    //便于阅读,这些getter或者Setter方法放在代码的尾部
    //第二,封装私有变量后,需要取值的变量用get方法,需要赋值的方法用set,即需要取值也需要赋值就是两个方法都有
    //比如对name,get加上属性的首字母大写,get方法的目的是需要用户获取这个值,这里有返回值
    public String getName(){
        return this.name;
    }
    //set方法只起到一个赋值的作用,不需要返回值,因为需要赋值,必须有参数,参数name是局部变量
    //一般set方法局部变量和类中属性名重名
    public void setName(String name) {
        this.name=name;
    }

    public String getPeison() {
        return peison;
    }

    public void setPeison(String peison) {
        this.peison = peison;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getSmall_pic() {
        return small_pic;
    }

    public void setSmall_pic(String small_pic) {
        this.small_pic = small_pic;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值