Java中类与对象和类的继承

 面对对象概述

在面向对象定义之中,也规定了一些基本的特征:
(1)封装:保护内部的操作不被破坏;
(2)继承:在原本的基础之上继续进行扩充;
(3)多态:在一个指定的范围之内进行概念的转换。

面对对象开发过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)

  • 对象:对象是类的一个实例,它具有自己的属性和行为(方法),先有对象再有类。
  • :类是多个对象的集合体,它描述一类对象的行为和状态。

实例展示

首先创建一个老师的类

public class Teather {
//    姓名、年龄、性别、职称、所在院系、是否党员、所授课程;
//    方法:上课;
    protected String name;
    protected String age;
    protected String sex;
    protected String rank;
    protected String college;
    protected String isPartyMember;
    protected String SelectedCourse = "";

//创建老师类的set和get方法
 public void setName(String value) {
        name = value;
    }


    public void setAge(String value) {
        age = value;
    }

    public void setSex(String value) {
        sex = value;
    }

    public void setRank(String value) {
        rank = value;
    }

    public void setCollege(String college) {
        this.college = college;
    }

    public void setIsPartyMember(String isPartyMember) {
        this.isPartyMember = isPartyMember;
    }



    public void setSelectedCourse(String selectedCourse) {
        System.out.println("You are selecting the course of " + selectedCourse + "!");
         if(SelectedCourse !=" ")
        SelectedCourse = SelectedCourse + "," + selectedCourse;
        else
        SelectedCourse = SelectedCourse  + selectedCourse;
    }

    public String getName() {
        return name;
    }
    public String getAge() {
        return age;
    }
    public String getSex() {
        return sex;
    }
    public String getRank() {
        return rank;
    }

    public String getSelectedCourse() {
        return SelectedCourse;
    }



    public String getIsPartyMember() {
        return isPartyMember;
    }


    public String getCollege() {
        return college;
    }

    public void deliverCourse(String selectedCourse) {
        System.out.println("You are delivering " + selectedCourse + "!");
        SelectedCourse = SelectedCourse + "," + selectedCourse;
    }
}

再创建一个导师的类来继承老师的类(同时进行重载和重写)

public class Supervisor extends Teather{
//导师类继承老师类
//同时对导师中的属性进行添加
    protected String direction;
    protected String tClass;
//在导师类中创建study方法
public void study(String tDirection){
        System.out.println("你正在研究课题"+tDirection+"。");
    }
   //对study方法进行重载
    public void study(String tDirection,String tRank){
        System.out.println("你正在研究"+tRank+tDirection+"。");
   //对老师类中的deliverCourse方法进行重写(delivering改为studying)
 public void deliverCourse(String selectedCourse) {
        System.out.println("You are studying " + selectedCourse + "!");
        SelectedCourse = SelectedCourse + "," + selectedCourse;
    }

}

 提示:java中不管是属性还是方法、类都需要有修饰符作为前缀

Java语言提供了很多修饰符,主要分为以下两类:

  • 访问修饰符
  • 非访问修饰符(此处略过)

 访问控制修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

  • private : 在同一类内可见。使用对象:变量、方法。

  • public : 对所有类可见。使用对象:类、接口、变量、方法

  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。。

 注意:接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public

创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

类的继承

分类:类继承类和类继承接口

类继承类

格式:public class 子类 extends 父类{类体}

实例:

public class Student extends Person{
    void study(){
        System.out.println("student study..." + age);
    }
}

注意:

  • 其中子类拥有父类非private的属性和方法(一般父类用private修饰属性,
                   用public修饰方法,子类中用方法设置属性)
  • 子类可对父类进行扩展,可对父类方法进行重写(重写的访问修饰符权限
                    应大于等于父类)权限大小public>protected>缺省>private
  • super表示父类,this表示本类
  •  所有类均继承object类

特点:可单继承、多重继承,但不能多继承

类继承接口

格式:public class 类名 implements 接口,接口,…… {类体}

范例:

public class DrawMouse implements MouseListener{

 public void mouseClicked(MouseEvent e){
};
 public void mousePressed(MouseEvent e){
};
 public void mouseReleased(MouseEvent e){
};
 public void mouseEntered(MouseEvent e){
};
 public void mouseExited(MouseEvent e){
};
//接口中的方法全部需要重写,缺一不可


}

特点:

  •  接口的抽象方法都需要重写
  • 类中的属性默认具有final和static属性即变量初始化后不可更改
                   
上一篇:redis 报错 Redis protected-mode 配置文件没有真正启动


下一篇:第24天 JavaScript原型,原型链 ? 有什么特点?