zoukankan      html  css  js  c++  java
  • java的三大特征:封装,继承和多态

    有点递进关系,继承增加了代码的复用性,多态必须基于继承才可以实现。

    一、封装

      使用原因:当我们没有为类进行封装的时候,类中定义的属性可以被外界随意访问,这样容易造成一些合法性的问题。封装可以非常好的解决这个问题。

      步骤:1.先把我们希望外界不要直接访问属性设为private

           2.创建一个set方法来帮助外界为该变量赋值,创建get方法来帮助外界为该变量取值

           3.形成规范,每一次在类中编写不适合被外界直接访问的属性时,一律按照套路把属性设为私有,生成set和get方法

    public class Goods {
    
        private String name;  //商品名字
        private int price;  //商品单价
        private int count;  //商品数量
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        public int getCount() {
            return count;
        }
    
        public void setCount(int count) {
            if(count<0){
                this.count = 0;
            }else {
                this.count = count;
            }
        }
    }
    public class TestGoods {
    
        public static void main(String args[]){
            Goods goods = new Goods();
            goods.setCount(2);
            System.out.println("商品的数量是:"+goods.getCount());
        }
    }

    构造方法:如果一个对象有多个属性,那么,需要创建很多对象,为了解决重复的set值,所以就用到了构造方法;

      1.每一个类都有一个隐形的默认的无参数的构造方法。比如上面的 Goods goods = new Goods();

      2.构造函数的语法很鲜明,访问修饰符 类名(参数列表);   构造方法必须与类名同名

      3.构造方法可以有很多个,实例化的时候需要传入对应的参数。

    public class Student {
    
        private String name;  
        private int age;  
        private char sex;
    
        public Student(String name, int age, char sex){
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        public Student(String name, char sex){
            this.name = name;
            this.sex = sex;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public char getSex() {
            return sex;
        }
    
        public void setSex(char sex) {
            this.sex = sex;
        }    
    }
    public class TestStudent {
    
        public static void main(String[] args){
            Student student1 = new Student("张三",25,'男');
            Student student2 = new Student("李四",'男');
            System.out.println("学生的名字是:"+student1.getName()+", 年龄是:"+student1.getAge()+", 性别是:"+student1.getSex());
            System.out.println("学生的名字是:"+student2.getName()+", 性别是:"+student2.getSex());
        }
    }

    二、继承

      意义:父类和子类,子类可以继承父类的某些属性和方法,但是私有的不可以被继承。

          重写:当某些方法不适用与子类的时候,子类可以重写他的方法,方法名称参数不变,只是内容会改变。

          super:就是基类中的,表示当前类的父类

    (在子类中右键,点击generate)                      (然后点击override methods,就会出现重写的方法)            (会让你选择要重写那个方法)

         

    public class Father {
    
        private String name;
        private int age;
        private String hobby;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getHobby() {
            return hobby;
        }
    
        public void setHobby(String hobby) {
            this.hobby = hobby;
        }
    
        public void teach(){
            System.out.println("教育孩子");
        }
    }
    public class Son extends Father{
    
    
        @Override
        public void teach() {
            super.teach();
        }
    }
    public class TestSon {
    
        public static void main(String[] args){
            Son son = new Son();
            son.teach();
            son.setAge(6);
            System.out.println(son.getAge());
        }
    }

    三、多态(父类的引用可以指向子类的实例,子类有很多不同的)father可以叫做对象,变量,引用,句柄,右半边的代码创建了一个son的实例

    前提:必须要有继承关系

    精准概述:父类的引用指向子类的实例

    意义:提升灵活性,降低耦合度

    特点:只有继承关系才可实现多态

            可以将子类的对象实例赋值给其父类的变量

        主要基于方法的重写进行体现

       不可以调用子类中有的父类中没有的方法。

    public class Son extends Father{
    
    
        @Override
        public void teach() {
            System.out.println("儿子要好好学习");
        }
    }
    public class Daughter extends Father{
    
    
        @Override
        public void teach() {
            System.out.println("女儿要好好学习");
        }
    }
    public class TestSon {
    
        public static void main(String[] args){
            
            Father father = new Son();
            father.teach();
            father = new Daughter();
            father.teach();
        }
    }

  • 相关阅读:
    Postman使用教程
    CAD和ArcGIS转换 矢量配准
    SAP CRM Advanced search和Simple search里Max hit表现行为的差异
    SAP CRM Product simple search的启用步骤
    如何快速定位SAP CRM订单应用(Order Application)错误消息抛出的准确位置
    如何动态修改SAP CRM WebClient UI表格栏的宽度
    如何在SAP CRM WebClient UI里创建web service并使用ABAP消费
    如何处理SAP CRM Web Service错误
    如何使用SAP CRM WebClient UI实现一个类似新浪微博的字数统计器
    如何开启SAP CRM基于WORD模板创建附件的功能
  • 原文地址:https://www.cnblogs.com/peiminer/p/10009131.html
Copyright © 2011-2022 走看看