zoukankan      html  css  js  c++  java
  • java入门第四篇-面向对象的三个基本特征;

    面向对象的三个基本特征:封装,继承,多态;  

    封装:将属性私有化,不允许外部数据直接访问,并设置相应的方法对属性进行设置和读取,从而实现对属性访问的限制。这种限制属性访问的操作叫做封装。

    通俗理解就是将属性封在一定的范围内,只能在给定的条件内取值。

    如下代码示例,可以实现对限制年龄的取值。

    private int age;
    public void setAge(int age){
                if(age>0&&age<120){
                    this.age=age;
                }else{
                    System.out.println("年龄输入不合法");
                    this.age=-1;
                }
            }
            
    public int getAge(){
                return this.age;
            }

      继承:将多个类公用的属性和方法写在父类里,子类使用extends关键字继承父类,就可以使用父类非私有化的属性和方法。

      

    public class ColorPrinter extends Printer{

    }

      1.使用继承可以:1.提高代码的复用性,子类可以调用父类非私有的属性和方法,不用再次编写。

             2.提高代码的维护性。

             3.将类与类联系起来,是多态的前提。

    2.子类需要访问父类成员,使用super关键字。

       super.属性 访问父类属性;

       super.方法 访问父类方法。

    如果子类中没有同名的属性和方法覆盖父类,则依然可以直接使用this.属性直接调用从父类中继承的非私有属性。

    但是子类中如果重写了与父类同名的属性,this.属性访问的是本类属性。 super.属性访问的是父类属性(非私有)。

     在子类构造中,如果使用super(属性名,属性名,属性名);表示调用父类的函数,而且super()函数必须在子类的第一行。

     super关键字,无法访问父类的私有属性和私有方法。

    public class Piano extends Instrument {
                public Piano() {
                    super();
                }
                public Piano(String brand,int weight,String size) {
                    super(brand,weight);
                }
    }

    3.子类可以访问父类的属性和方法的种类。


    4.继承后变量的初始化顺序: 父类属性-父类方法-子类属性-子类方法。

    5.继承只能单继承,不能多重继承:一个子类不可以有多个父类;

       但是可以多层继承:子类可以当别的子类的父类。并将从父类继承的非私有属性传递给子类。

      抽象类:

         1.使用abstract修饰class的类,叫抽象类,[抽象类无法实例化]。

        2.使用abstract修饰,而且[没有方法内容]的方法,叫抽象方法,[父类有抽象方法,子类必须重写抽象方法]。
          

     public abstract void method();

         子类继承抽象类,子类必须重写所有父类的抽象方法(除非子类也是抽象类)。

    fina关键字l:
      1.final修饰的类为最终类,不能被继承。

      2.final修饰的方法为最终方法,不能被重写。

       3.final修饰的变量为常量,不能被修改。(常量全部大写)。

      

    public final class Bus extends MotoVehicles {
    
    }


       static关键字:


        static修饰的属性和方法称为类属性和类方法,也叫静态属性和静态方法。
     

    public static String name="tom";


         静态属性和静态方法可以直接使用类名调用,也可以使用对象名调用

     person.name; //类名调用,推荐;
     p.name; //使用对象名调用


         而成员属性和成员方法,也叫实例属性和实例方法,只能使用对象名调用。


       4.类属性和类方法,是属于类的,在类装载的时候直接声明;


          成员属性和成员方法,是属于对象的,在对象实例化时才能产生;


          所以静态属性和方法将先于非静态属性和方法产生。

      >>>静态方法不能调用非静态属性和方法,非静态方法能调用静态属性和方法。


       静态方法中不能使用this和super(this代指本类属性,super代指父类对象,因为产生静态方法时,还没有对象)。


      5.由于类属性和类方法是属于类的。因此,只会在类装载的时候产生一份;


      也就是说,一个类的静态属性只能在类装载的时候产生一份,后续使用该类实例化的多个对象将共用同一个静态变量。

      多态:

      概念:同一种事物,因为给定条件的不同,展示出不同的结果,叫做多态。

         程序中的多态:同一个引用类型,使用不同的实例,产生不同的结果。

      
      实现多态的条件:
        1.子类继承父类;

         2.子类重写父类方法;

         3.父类引用指向子类对象。

      多态可以提高代码的维护性和拓展性。

  • 相关阅读:
    你可能不知道的 Laravel Eloquent 小技巧
    Intervention/image 对 Laravel 项目中的图片进行处理
    phpspider简单快速上手的php爬虫框架
    laravel job 与 event 的区别
    laravel 存储配置 Redis 多个库选择
    【XSS技巧拓展】————28、The Shortest Reflected XSS Attack Possible
    【XSS技巧拓展】————27、Avoiding XSS Detection
    【XSS技巧拓展】————26、File Upload XSS
    66、Redis 未授权访问配合 SSH key 文件利用分析
    【XSS技巧拓展】————25、Transcending Context-Based Filters
  • 原文地址:https://www.cnblogs.com/lslboy/p/8743475.html
Copyright © 2011-2022 走看看