JAVA学习笔记(2)
程序员文章站
2024-02-16 09:44:22
...
18.接口
package cn.cast.demo8;
//接口
public interface Smoking {
//成员方法
//接口中的成员方法都有默认的修饰符public abstract
public abstract void smoke();
}
package cn.cast.demo8;
//接口Smoking的实现类(子类
public class Teacher implements Smoking{
@Override
public void smoke() {
System.out.println("吸烟有害身体健康");
}
}
package cn.cast.demo8;
public class Test {
public static void main(String[] args) {
//Smoking s=new Smoking();
//这样写会报错,因为接口是比抽象类更抽象的存在,不能实例化
//若想实例化可通过创建其子类对象完成
//多态
Smoking s=new Teacher();
s.smoke();
}
}
java中的类最多只能继承一个类,可以实现多个接口;
所有变量都有修饰符 public static final 你没写系统会默认添加;
package cn.cast.demo8;
public interface USB {
//成员常量
int NUM=10;
//成员方法
//jdk7及以前的方法;
public abstract void open();
void close();
//jdk8多了两种写法,即方法有了方法体
public static void method1(){
System.out.println("我是jdk8的新特性");
}
public default void method2(){
System.out.println("我是jdk8的新特性");
}
//jdk9多了一种写法
private void method3(){
System.out.println("我是jdk8的新特性");
}
//接口中没有构造方法
//public USB(){}
}
package cn.cast.demo8;
public class Test {
public static void main(String[] args) {
//USB.num=20;会报错,常量不能被修改
System.out.println(USB.NUM);
}
}
19.java的常用工具_API
如果有些类没有构造方法,说明类里面的成员大多都是静态的,可以通过类名.方式直接调用;
API文档——类的使用说明书
API文档
Object类:
java.lang下的类可以直接使用不需要导包;
package cn.cast.demo;
public class Test {
public static void main(String[] args) {
//非静态的方法的调用方式:通过 对象名.的形式调用
//1.创建object类型对象
Object obj1 = new Object();
Object obj2 = new Object();
//2.测试object类中的成员方法
int code1 = obj1.hashCode();
int code2 = obj2.hashCode();
System.out.print(code1+" "+code2);
System.out.println();
//int hashCode();返回对象的哈希码值,不同对象的哈希码值一般不同
//284720968 189568618
//Class<?> getClass():返回该调用者的字节码文件,一个类只有一个字节码文件对象(一个类可以创建多个对象)
Class claz1=obj1.getClass();
Class claz2=obj2.getClass();
System.out.println(claz1);//class java.lang.Object
System.out.println(claz2);//class java.lang.Object
System.out.println();
//String toString():返回该对象的字符串表示形式,默认打印的地址值,但不同对象的地址值肯定不同
//地址值组成:全类名(包名加类名java.lang.Object)aaa@qq.com+该对象的哈希码的无符号十六进制
//哈希码:根据地址值计算出来的一个结果
String s1=obj1.toString();
String s2=obj2.toString();
System.out.println(s1);//aaa@qq.com
System.out.println(s2);//aaa@qq.com
System.out.println();
//boolean equals():比较两个对象是否相等,默认比较地址值,无意义(因为不同对象的地址值肯定不同),子类一般都会重写这个方法
boolean b1=obj1.equals(obj2);
System.out.println("b1 = " + b1);
//b1 = false
}
}
上一篇: Python 线程学习thread