做数学网站,福州seo推广,万建站南昌,成都市网站建设服务商一. 类与对象
1.1 定义类 #xff1a;类是由数据成员和成员方法组成的一个程序单元。数据成员表示类的属性#xff0c;成员方法表示类的行为。
定义类的语法格式 :
class 类名{数据类型 数据成员名;...public 返回值类型 方法名(参数 2, 参数 2 ...){// 方法体[return 表达…一. 类与对象
1.1 定义类 类是由数据成员和成员方法组成的一个程序单元。数据成员表示类的属性成员方法表示类的行为。
定义类的语法格式 :
class 类名{数据类型 数据成员名;...public 返回值类型 方法名(参数 2, 参数 2 ...){// 方法体[return 表达式;]}
}
Java 用 class 关键字标识类类体中定义数据成员和成员方法。
class Person{// 定义数据成员表示人的特征String IDNumber;String name;int age;public String getIDNumber() {return IDNumber;}public void setIDNumber(String IDNumber) {this.IDNumber IDNumber;}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;}void eating(String food){System.out.println(name 吃 food);}void study(String book){System.out.println(name 正在学习: book);}void watchTV(String program){System.out.println(name 正在看: program);}void display(){System.out.println(姓名: name);}}
定义类分3个层次第1层是类名第2层是数据成员第3层是成员方法。 1.2. 创建使用对象
语法格式 : 先声明后实例化对象 类名 对象名表; // 声明对象 对象名 new 类名(); // 实例化对象 语法格式 : 声明和实例化对象同时完成 类名 对象名 new 类名(); 实例化对象后该对象拥有自己的数据成员和成员方法通过引用对象成员使用对象。
语法格式 : 引用数据成员 对象名.数据成员名 语法格式 : 引用成员方法 对象名.成员方法名(参数表) Java数据类型分为基本数据类型和引用数据类型。类属于引用数据类型引用数据类型指一段堆内存空间能同时被多个栈内存空间指向对象名指的是保存在栈内存中用来访问其对应堆空间的访问地址。堆内存保存数据成员信息因此能通过对象名引用堆内存。 1.3 构造方法
1.3.1 定义构造方法
class 类名{访问权限 类名(形参列表){// 方法体;// 构造方法没有返回值}
}
构造方法是类中特殊的成员方法特殊性主要体现在
a) 构造方法名与类名相同
b) 不能为构造方法指定类型也不能用return 语句返回值。但构造方法由隐含返回值该值由系统内部使用
c) 可以重载构造方法
d) 编程人员不能显示的直接调用构造方法每当new 关键字创建对象时JVM为新建对象在堆内存开辟空间后JVM将自动调用构造方法初始化新对象。
e) 如果自定义类中未定义构造方法系统将提供要给默认的空构造方法。如果自定义类中定义了构造方法系统将不再提供空构造方法 1.9 抽象类
1.9.1 抽象类概念 : 抽象类刻画公共行为特征但并没有在抽象类内部实现这些公共行为而是通过继承由派生类实现具体的公共行为。抽象类中定义的方法称为抽象方法这些方法只有方法声明而没有方法具体定义派生类覆写抽象方法实现与该派生类相关的操作。
1.9.2 定义抽象类
用abstract 修饰的类称为抽象类用 abstract 修饰的方法且只有方法声明没有方法体的方法称为抽象方法。 定义抽象类语法格式 abstract class 抽象类名{ //数据成员 //构造方法 [访问权限] 返回值类型 方法名(形参列表){ // 方法体 返回值 } [访问权限] abstract 返回值类型 方法名(形参列表); } Java 程序对抽象类有如下要求 :
(1) 抽象类中可以有0个或者多个抽象方法也可以包含非抽象方法。
(2) 抽象类中可以不定义抽象方法但有抽象方法的类必须是抽象类。
(3) 抽象类可以派生子类。如果派生实体类实体子类必须实现抽象类中定义的所有抽象方法如果派生抽象子类抽象子类可以不实现抽象父类的抽象方法。
// 抽象父类
abstract class Person{public void talk(){ }; // 普通方法abstract void workOn(); //抽象方法
}// 实体子类
class Teacher extends Person{void workOn(){System.out.println(教师授课);}
}// 抽象子类
abstract class Student extends Person{// 没有实现父类的抽象方法 workOn()abstract void study();
}
(4) 抽象类不能实例化对象由抽象类派生的实体子类实例化抽象父类对象。
package abstract_test;abstract class Person{// 1.1 私有数据成员private String name;// 1.2 构造方法public Person(){ }public void setName(String name) {this.name name;}public String getName() {return name;}public Person(String name){this.name name;}public void eating(String food){System.out.println(this.name 正在吃 food);}abstract public void workOn();
}// 2. Person类的子类 Teacher
class Teacher extends Person{private String department;public Teacher() { }public Teacher(String name, String department){super(name); // 调用父类构造方法this.department department;}public String getDepartment() {return department;}public void setDepartment(String department) {this.department department;}public void workOn(){System.out.println(this.getName() is this.department workint);System.out.println(this.getName() teaching chinese);}
}// 3. Person 的子类 Studentclass Student extends Person{private int id;public Student() {}public Student(String name, int id){super(name);this.id id;}public int getId() {return id;}public void workOn(){System.out.println(id: getId() , name: getName() studing);}
}public class abstract_demo {public static void main(String[] args) {Teacher th new Teacher(kongzi, Chinese);th.workOn();Student st new Student(zilu, 10001);st.workOn();}
}抽象类本身不能通过构造方法创建对象但能通过实体子类调用抽象父类的构造方法。继承机制中不管父类是普通类还是抽象类实例化子类对象前必须先实例化父类对象。