面对对象概述
在面向对象定义之中,也规定了一些基本的特征:
(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属性即变量初始化后不可更改