instanceof
判断对象类型
判断对象a 是否和A , B ,Object存在继承关系
A a = new A();
B b = new A();
Object c = new A();
System.out.println(a instanceof A);
System.out.println(a instanceof B);
System.out.println(a instanceof Object);
输出:true
true
true
类型转换
1.父级转子级,向下转型,需要强制转换
2.子级转父级向上转型会丢失一些属性
static:和类一起加载
非静态变量可以被类直接调用,不需要new 一个对象
package com.baidu.www.operater.objec.duotai;
public class B {
private static int age;//静态变量
private double score;//非静态变量
public static void main(String[] args) {
//静态变量可以被类直接调用
System.out.println(B.age);
}
}
非静态方法可以调用静态方法,静态方法不能调用非静态方法
package com.baidu.www.operater;
public class 静态 {
public static void go(){
}
public void run(){
go();
}
}
**静态代码块 匿名代码块 **
静态代码块和类一起加载所以 首先出现(只加载一次)
匿名加载快可以用于赋初值
package com.baidu.www.operater;
public class 静态 {
{
//匿名代码块
System.out.println("匿名代码块");
}
static {
//静态代码块
System.out.println("静态代码块");
}
public 静态(){
System.out.println("a");
}
public static void main(String[] args) {
静态 a = new 静态();
System.out.println("==========");
静态 b = new 静态();//静态代码块只加载一次
}
}
输出结果:
静态代码块
匿名代码块
a
==========
匿名代码块
a
抽象类
public abstract class A{
}
抽象类通过abstract实现
不能被new出来,只能通过子类(重写)来实现它;
抽象类中可以写普通方法,抽象方法只能在抽象类中;
接口
接口的定义 Interface
public interface UserService{
}
1.接口中的方法都是抽象的,默认添加了Public stract;
接口中的属性都是常量,默认添加了 public static
package com.baidu.www.operater.Userservice;
public interface UserService {
//接口中的方法都是抽象的 public abstract
void add(String name);
void delete(String name);
void update ( String name);
void query(String name);
}
package com.baidu.www.operater.Userservice;
public interface TimeService {
void add(int time);
void delete(int time);
void update ( int time);
void query(int time);
}
2.接口的实现
接口的实现可以实现多个接口
实现接口的类必须重写接口中的方法
public class ServiceImpl implements +接口名{
}
package com.baidu.www.operater.Userservice;
//接口可以多继承
//实现接口的类就需要重写接口的方法
public class UserServiceImpl implements UserService,TimeService {
@Override
public void add(String name) {
}
@Override
public void delete(String name) {
}
@Override
public void update(String name) {
}
@Override
public void query(String name) {
}
@Override
public void delete(int time) {
}
@Override
public void add(int time) {
}
@Override
public void query(int time) {
}
@Override
public void update(int time) {
}
}
总结