抽象类(abstract)
java中的对象是对现实世界的具象化,但是在现实世界中,某些类并不具有实例化的意义,因此可以定义为抽象类 抽象类: 1 创建抽象类的时候需要添加abstract 的关键字 2 不能对抽象类进行实例化,也就不能new对象 3 抽象类中的某些方法需要子类具体来实现,父类实现没有意义,此时可将此方法定义为抽象方法,没有具体的实现, 直包含方法名称,返回值,参数列表,访问权限 4 使用abstract 标识的方法叫做抽象方法,可以不写方法的实现 5 子类继承抽象父类的时候,必须要将父类里面的抽象方法实现或者将子类也定义为抽象方法 6 有抽象方法的一定是抽象类,但是抽象类中不一定包含抽象方法
package com.yuzhu.abstrats;
public abstract class Pet {
private String name;
private int age;
public abstract void print();
public void test(){
System.out.println("hahhaahhahhah");
}
}
package com.yuzhu.abstrats;
public class Dog extends Pet {
private String gender;
@Override
public void print() {
System.out.println("dog is play");
}
}
public class AbstractTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.test();
dog.print();
}
}
fianl用法
final 的使用: final可以修饰变量: 表示的变量不可变 final 可以修饰方法: 表示方法不可以被重写 表示类不可以被继承
public final class FinalDemo { // 表示类不可以被继承
public static final int a = 20;
public final void test(){ // 不可以被重写
System.out.println("this is final test");
}
public static void main(String[] args) {
}
}
对象的比较—==和equals()
▪ ==:
比较两基本类型变量的值是否相等
比较两个引用类型的值即内存地址是否相等,即是否指向同一对象。
▪ equals() :
两对象的内容是否一致
▪ 示例
object1.equals(object2) 如:p1.equals(p2)
比较所指对象的内容是否一样
是比较两个对象,而非两个基本数据类型的变量
object1 == object2 如:p1==p2
比较p1和p2的值即内存地址是否相等,即是否是指向同一对象。
自定义类须重写equals(),否则其对象比较结果总是false。
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
public static void main(String[] args) {
Student s1 = new Student("zhangsan",12);
Student s2 = new Student("zhangsan",12);
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}