java第四章(三)

本文介绍了面向对象编程中的三大关键概念:封装、继承和抽象类,以及方法重写。封装涉及数据隐藏和访问控制,继承用于代码复用和扩展,抽象类则用于定义接口。此外,文章还讨论了基本数据类型、变量分类和Java的继承机制,如单继承、多层继承和使用`super`关键字。
摘要由CSDN通过智能技术生成

 面向对象语言的三大特征

封装

一般意义的封装,例如将重复出现的代码抽取了一个函数,称为代码的封装(包装)

面向对象的封装

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是 通过该类提供的方法来实现对隐藏信息的操作和访问 ,方便加入控制语句,主动权就在我们类手中.

封装案例1

public class Person {
    //将成员变量属性设为私有
    //封装案例1----->将类中成员变量属性私有化
    private String name;
    private int age;

    //在本类中,用方法给私有成员变量赋值
    //向外提供一个公共的方法,可以加入控制语句
    public void setName(String name){
        if(name.length()>=2&&name.length()<=6){
            this.name=name;
        }
    }

    //获取
    public String getName(){
        return this.name;
    }

    public void setAge(int age){
        if(age>=0&&age<200){
            this.age=age;
        }
    }
    public int getAge(){
        return this.age;
    }

}

封装案例2:

  • 将类的方法私有化

public class Window {
    //在类加载时只创建一个唯一的对象
  private static Window window=new Window();

   //将构造方法私有化,在外界就不能随意调用了
   private Window() {

    }

    //向外界提供获得此对象的方法
    public static Window getWindow(){
       return window;
    }
}

public class Testwindow {
    public static void main(String[] args) {
        System.out.println(Window.getWindow());
        System.out.println(Window.getWindow());
    }
}
      补充变量的分类           

数据类型:

                        基本类型变量 byte short int long float double char boolean 8种关键字声明的

                        引用类型变量: 类 数组持有的是对象的引用地址

按照位置分:
                        成员变量: 定义在类中,可以使用权限修饰符修饰
                        在构造方法中进行自动的初始化赋值
生命周期:
                        非静态:随着对象的创建,随着对象的销毁而销毁
                        静态的: 随着类的加载而加载, 随着类的销毁而销毁局部变量:定义在方法中,不可以                        使用权限修饰符修饰

存储位置:

                非静态:堆

                静态:方法区

局部变量:

                定义在方法中,不可以使用权限修饰符修饰
                必须我们自己进行初始化
                生命周期: 方法调用创建,方法运行结束销毁

                 存储位置:栈

继承 

就是将同一类事物中共性的属性和行为进行抽取,定义在一个类中(基类)

其他类可以继承基类,就可以拥有基类中的功能

 实现代码复用性
  以及可以在子类中扩展子类直接特有的功能,而不影响其他类

只要符合is-a(什么是什么)的关系

优点:

  • 继承的出现减少了代码冗余,提高了代码的复用性。
  • 继承的出现,更有利于功能的扩展。
  • 继承的出现让类与类之间产生了is-a的关系,为多态的使用提供了前提

 当一个类没有显示的继承,那么这个类默认继承字Object类

Object类是java类体系中最大的类,Object之上没有最大的类

继承的细节

  • 子类继承父类后,拥有父类成员变量和方法,但不能直接访问父类的私有私有成员
  • 在Java 中,继承的关键字用的是“extends”,表示子类是对父类的扩展
  • Java支持多层继承(继承体系)
  • 一个父类可以同时拥有多个子类
  • Java只支持单继承,不支持多重继承

方法重写:

当父类中方法的实现不能满足子类需求时,可以在子类中对父类的方法进行重写,
        这样调用时就会掉用子类中的方法
        方法重写的要求:
            子类重写的方法的结构  与  父类方法的结构必须一致
            方法名,参数列表,返回值必须一致
            访问权限必须大于或等于父类方法访问权限 

 //子类中的方法
@Override
    public void eat(){
        System.out.println("狗吃骨头");//重写(覆盖)父类中的方法
    }
   //父类中的方法
 public void eat(){
        System.out.println("在吃东西");
    }
//@Override是java中的一个注解标签,定义在重写方法上面,表示此方法是从父类重写而来的
    //也可以不用添加,只要重写的方法结构与父类一致,也算正确的重写
    //建议保留:1.编译器进行语言验证,2.阅读代码时,明确知道此方法是重写

Super关键字

在Java类中使用super来调用父类中的指定操作:

  • super可用于访问父类中定义的属性
  • super可用于调用父类中定义的成员方法
  • super可用于在子类构造器中调用父类的构造器
在子类的构造方法首先调用父类的构造方法,  不写默认存在
    public Dog(){
        super();//在子类的构造方法首先调用父类的构造方法,  不写默认存在
        System.out.println("Dog类的构造方法");
    }

抽象类

抽象方法:只有方法声明,没有具体实现方法

抽象类:
    使用abstract修饰的类就是抽象类
    一个类中如果包含抽象方法,那么这个类型必定是抽象类,一个类是抽象类,不一定包含抽象方法
    抽象类中

    特点:

          抽象类不能创建对象,其他功能与正常类相同,可以有成员变量,成员方法,构造方法
          主要就是在上层定义功能,让子类继承实现
          一个子类入伙继承了抽象类,要么重写抽象类中所有的抽象方法,要么将该类定义为抽象类
public abstract class Animal {
    private String name;
    private int age;

    public Animal(){

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

  /*
  抽象方法,没有方法,使用abstract修饰
  只定义,不做操作
  */
    public abstract void eat();

    public  void sleep(){
        System.out.println("睡觉");
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值