Java面向对象的核心组成是“类(class)”。
public class User {
private String name;
private int age;
public User() {
}
public User(String name) {
this.name = name;
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static String getClassName() {
return "User";
}
/**
* InnerUser
*/
public class InnerUser {
public String getSuperName() {
return getName();
}
}
}
子类方法不能覆盖父类中声明为final或static的方法。
子类方法不能覆盖父类中声明为final或static的方法。
子类方法必须覆盖父类中声明为abstract的方法(接口或抽象类)。 ``` public class User { private String name; private int age;
public User(String name, int age) { this.name = name; this.age = age; }
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; } }
class AdminUser extends User { private int role;
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public AdminUser(String name, int age, int role) {
super(name, age);
this.role = role;
}
public AdminUser getAdminUser() {
return new AdminUser(this.getName(), this.getAge(), this.getRole());
} } ```
被abstract修饰词修饰的类称为抽象类。抽象类包含抽象方法的类。
抽象方法:只声明未实现的方法,抽象类必须被继承。如果子类不是抽象类,就必须覆写抽象类中的全部抽象方法。
抽象类是不完整的类,不能通过构造方法被实例化。但这不代表抽象类不需要构造方法,其构造方法可以通过前面介绍的super关键字在子类中调用。 ``` abstract class User { private String name;
protected User(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
abstract int getNum(); }
class AdminUser extends User { private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public AdminUser(String name, int age) {
super(name);
this.age = age;
}
@Override
int getNum() {
return 10;
} } ```
接口是另一种引用类型。接口的修饰词只有public和默认两个,含义与类修饰符相同。接口名的命名规则也与类名相同。因为接口中变量的修饰词只能是public、final、static,所以不用显式地使用修饰词。又因为接口中变量的修饰词是public、final、static,所以在接口中声明的都是常量。接口中的方法都没有方法体,除了定义的常量以外也没有变量。接口中方法的修饰词只能是public,默认也是public。
另外,接口也有继承机制并支持多继承,可以使用extends关键字继承其他接口。
public interface User {
public static final String NAME = "User";
int getNum();
}
class AdminUser implements User {
@Override
public int getNum() {
return 10;
}
}
匿名内部类就是没有名字的内部类,经常被应用于Swing程序设计中的事件监听处理。
public class ClassDemo {
public static void main(String[] args) {
new ButtonAction(){
public void click(){
System.out.println(" 这是匿名类,但谁也无法使用它! ");
}
}
}
}
Object是Java中唯一一个没有父类的类,是Java最顶层的父类。 Object()、equals(Object)、toString()、hashCode()
|基本数据类型|包装类| |—|—| |byte|Byte| |short|Short| |int|Integer| |long|Long| |float|Float| |double|Double| |char|Character| |boolean|Boolean|
重写 equals() 和 toString() 方法覆盖父类方法。
编写一个程序,得出三个不同盒子的体积。将每个盒子的高度、宽度和长度参数的值传递给构造方法,计算并显示体积。
编写一个程序,显示水果的定购详情。定义一个带有参数的构造方法,这些参数用于存放产品名、数量和价格。此程序接受并输出构造方法的参数,即三种不同的水果。
编写一个程序,用于创建一个名为Employee的父类和两个名为Manager和Director的子类。Employee类包含三个属性和一个方法,属性为name、basic和address,方法为show(),用于显示这些属性的值。Manager类有一个称为department的附加属性,Director类有一个称为transportAllowance的附加属性,创建Manager和Director类的对象并显示其详细信息。
编写一个程序,用于重写父类Addition中名为add()的抽象方法。add()方法在NumberAddition类中将两个数字相加,在TextConcatenation类中连接两个Strings(字符串)。声明属性并在父类Addition的构造方法中初始化属性。