JavaSE(三)
一、抽象类
1、为什么要有抽象类?
class Animal{
//eat()和speak()具体应该怎么写呢?没法写
public void eat(){
}
//多个子类存在差异化的行为,此时可以将行为声明为抽象方法
public void speak();
}
abstract(抽象的):可以用来修饰的结构:类、方法
1.用abstract关键字来修饰一个类时,这个类叫做抽象类;
2.用abstract来修饰一个方法时,该方法叫做抽象方法。
2、语法
abstract class 类名{
public abstract void 方法名();
}
注意:
①抽象类是用来继承的,不能实例化
②抽象类可以有构造方法便于子类调用
③抽象类的子类必须重写父类的抽象方法
④抽象类可以有普通方法(抽象类和类的区别)
匿名类(匿名子类)是不能有名字的类,它们不能被引用,只能在创建时用new语句来声明它们。
语法:
new抽象类/接口(){
//匿名类代码
};
二、接口(interface)
1、为什么要有接口
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
2、什么是接口
Java是特殊的抽象类,接口使用interface来定义
语法:
public interface InterfaceA{
}
public class SubClass implements InterfaceA{
}
3、接口的特点
1.接口(interface)中只能定义全局常量和抽象方法
2.接口中不能定义构造器不可以实例化
3.Java类可以实现多个接口
4、接口与接口之间可以继承,而且可以多继承
4、jdk8 接口的新特性
Java8中,你可以为接口添加静态方法和默认方法(default)。
三、常用类
1、Object
1、作用
Object是类层次结构的根,每个类都可以将Object作为超类。换句话说,该类所具备的方法,所有类都会有一份。(万类之祖)
2、常用api
equals():作用是比较对象是否相等,默认this == obj
hashCode():返回对象的哈希值(即对象的唯一标识符),默认native int hashCode(),即hash(内存地址)
toString():打印对象,默认getClass().getName() + "@" + Integer.toHexString(hashCode());

3、==和equals的区别
== equals
基本类型 值
引用类型 内存地址 内容
4、hashcode和equals的关系
equals相等则hashCode一定相等
hashCode相等则equals不一定相等
5、toString()方法
toString()方法在Object类中定义,打印对象时调用,返回一个包含类名、@符号和对象哈希码十六进制值的字符串:

更多推荐




所有评论(0)