栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

柘明Java笔记7

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

柘明Java笔记7

面向对象特征--封装

封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问, 而是通过该类提供的方法来实现对隐藏信息的操作和访问 。 封装的好处:1.隐藏类的实现细节. 2.只能通过规定方法访问 . 3.方便加入控制语句. 4.方便修改实现. 具体表现:使用不同的访问权限.

public class Person {    
       private  String name;
       private  int age;//属性私有化, 是封装的一种体现, 提供外界能够访问到的方法   
        public String getName() {
            return name;
        }
        public void setName(String name) {
            if(name!=null){
                this.name = name;
            }
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }   }

懒汉单例:

public class WindowDemo {
    static  WindowDemo windowDemo=null;//记录创建的那个唯一的对象
    //将构造方法私有化,在程序的其他地方就不能随意调用构造方法,
    private  WindowDemo(){
    }
    //向外界提供一个方法,用来获得创建的唯一的对象,在类内部控制起来就比较方方便
    public static WindowDemo  getWindowDemo(){
                  if(windowDemo==null){
                      windowDemo = new WindowDemo();
                  }
        return  windowDemo;
    }   }

饿汉单例:

//饿汉单例(急切式单例)
public class WindowDemo1 {
     //在加载类的时候,就直接将对象创建,由于是静态,只加载一次
    static WindowDemo1 windowDemo=new WindowDemo1();
    //将构造方法私有化,在程序的其他地方就不能随意调用构造方法,
    private WindowDemo1(){
    }
    //向外界提供一个方法,用来获得创建的唯一的对象,在类内部控制起来就比较方方便
    public static WindowDemo1 getWindowDemo(){
        return  windowDemo;
    }   }
面向对象特征--继承

继承:继承是面向对象程序设计不可缺少的设计思想,是实现代码可重用的根基,是提高代码可扩展性的主要途径。 1.继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力。 2.在JAVA中使用extends关键字来表示继承关系。 3.JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个直接父类。 6.继承之后子类可以调用父类的所有非私有属性和非私有方法.

什么时侯使用继承:符合is-a关系的设计(什么是什么) 1.继承与真实世界类似.2.只要说“猫是动物”狗也是动物3.继承是代码重用的一种方式,将子类共有的属性和行为放到父类中

继承的形式:[访问权限修饰符] [修饰符] 子类名 extends 父类名{子类体}

名词:·Dog类是 Animal类的子类. Animal类是Dog类的父类.Dog类是 Animal类的派生类. Animal类是Dog类的基类 继承的传递性:C类从B类继承,B类又从A类继承,那么C类就具有B类和A类的所有非私有属性和非私有方法,当一个没有继承任何一个类时,jvm会默认让类继承Object类,Object是 java为所有类提供的基类

继承中的构造方法:子类构造方法会先调用父类构造方法,使用super关键字调用父类任意一个构造方法,必须写在构造方法的第一行,如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参数的构造方法

方法的重写(OverRide) 应用场景:当父类的方法实现不能满足子类需求时,可以对方法进行重写( override),在子类中可以根据需要对从基类中继承来的方法进行重写。 方法重写规则:1.方法名相同、参数列表相同;2. 返回值类型相同;3.访问权限不能小于父类权限; 注意:构造方法,静态方法不能重写,成员变量不存在重写.

动物类:

public class Animal extends Object{
      private  String name;
      private   int age;
      public Animal() {
          super();
          System.out.println("动物类中无参的构造方法");
      }
    public Animal(String name,int age) {
        super();
        this.name = name;
        this.age = age;
        System.out.println("动物类中有参的构造方法");
    }
    public Animal(int age,String name) {
        super();
        this.name = name;
        this.age = age;
        System.out.println("动物类中有参的构造方法");
    }
     //  动物类具有的功能
      public void eat(){
           System.out.println("动物吃东西");
      }
      public void sleep(){
          System.out.println("动物睡觉");
      }
      public void showInfo(){
          System.out.println("名字:"+name+" 年龄:"+age);
      }
  //  私有属性访问入口  
    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 class Dog extends Animal{
     private String  color;
     public Dog(){
         super();
         System.out.println("狗类的无参构造方法");
     }
    public Dog(String name,int age,String color){
         super(name,age);
         this.color = color;
        System.out.println("狗类的有参构造方法");
    }
     public void play(){
         System.out.println("狗会玩");
     }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }   }

哮天犬:

public class XiaoTiaoQuan extends Dog{
     
     public  XiaoTiaoQuan(){
         //super();系统默认在第一行调用父类无参构造
         System.out.println("哮天犬类的无参构造方法");
     }
    public  XiaoTiaoQuan(String name,int age,String color){
        super(name,age,color);
        System.out.println("哮天犬类的有参构造方法");
    }
    
     @Override
     public void eat(){
         System.out.println("神犬坐着用餐");
         System.out.println("神犬坐着用餐");
     }
     public  void fly(){
         this.eat();
         System.out.println("神狗会飞");
     }
   
}
抽象类

抽象方法:抽象方法是一种特殊的方法,它只有声明,而没有具体的实现,抽象方法必须用abstract关键字进行修饰. 1.如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 2.抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法。 3.用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。 特点: 1.抽象类不能被实例化,但可以有构造方法,因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。 2.抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类

使用关键字abstract定义抽象类,一般语法:[访问权限] abstract class 类名 {成员列表}

抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并覆盖抽象方法,实现具体功能.

 //   抽象类:  当一个类中含有不具体的内容时;
public abstract class Animal {
    private   String name;
    private   int age;
    public Animal() {
    }
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public  abstract void eat();//抽象类
    public void sleep(){
        System.out.println("眼睛闭着睡");
    }
    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 class Dog extends  Animal {
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }   }
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号