继承(子类 is a 父类)
public class Extends {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.method();
teacher.methodT();
Assistant ass = new Assistant();
ass.method();
ass.methodE();
}
}
class Employee {
int num = 10;
public void method() {
System.out.println("父类方法执行");
}
public void methodE() {
System.out.println("父类运行方法e");
}
}
class Teacher extends Employee{
int num = 20;
public void methodT(){
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(super.num);
}
}
class Assistant extends Employee{
@Override
public void methodE() {
System.out.println("子类运行方法e");
}
}
继承关系中的构造函数
public class ExtendsConstructor {
public static void main(String[] args) {
Zi zi = new Zi();
}
}
class Fu {
public Fu(int num) {
System.out.println("父类有参构造");
}
}
class Zi extends Fu {
public Zi() {
super(10);
System.out.println("子类构造");
}
}
抽象(abstract)
public class Abstract {
public static void main(String[] args) {
Cat cat = new Cat();
cat.eat();
Dog2ha ha = new Dog2ha();
ha.sleep();
}
}
abstract class Animal {
public abstract void eat();
public abstract void sleep();
}
class Cat extends Animal {
@Override
public void eat(){
System.out.println("fish");
}
@Override
public void sleep(){
System.out.println("miaomiaomiao");
}
}
abstract class Dog extends Animal {
@Override
public void eat() {
System.out.println("bone");
}
}
class Dog2ha extends Dog {
@Override
public void sleep() {
System.out.println("hahaha");
}
}
class DogGolden extends Dog {
@Override
public void sleep() {
System.out.println("huhuhu");
}
}
接口(interface)
接口中抽象方法和默认方法
interface MyInterfaceAbstract {
public abstract void method1();
public void method2();
abstract void method3();
void method4();
default void methodDefault(){
System.out.println("接口中的默认方法");
}
}
class MyInterfaceAbstractImpl implements MyInterfaceAbstract {
@Override
public void method1() {
System.out.println("方法一");
}
@Override
public void method2() {
System.out.println("方法二");
}
@Override
public void method3() {
System.out.println("方法三");
}
@Override
public void method4() {
System.out.println("方法四");
}
}
public class DemoInterface {
public static void main(String[] args) {
MyInterfaceAbstractImpl impl = new MyInterfaceAbstractImpl();
impl.method1();
impl.method2();
impl.methodDefault();
}
}
接口中的静态方法
interface Interface {
static void methodStatic(){
System.out.println("接口中的静态方法");
}
}
class InterfaceImpl implements Interface {
}
public class DemoInterface1 {
public static void main(String[] args) {
InterfaceImpl impl = new InterfaceImpl();
Interface.methodStatic();
}
}
接口中私有方法和常量
interface Interface2 {
public static final int NUM_OF_CLASS = 10;
default void method1(){
System.out.println("一");
methodCommon();
}
default void method2(){
System.out.println("二");
methodCommon();
}
private void methodCommon(){
System.out.println("一二");
}
static void methodSta1(){
System.out.println("static1");
methodStaticCommon();
}
static void methodSta2(){
System.out.println("static2");
methodStaticCommon();
}
private static void methodStaticCommon(){
System.out.println("static12");
}
}
class InterfaceImpl2 implements Interface2 {
}
public class DemoInterface2 {
public static void main(String[] args) {
InterfaceImpl2 impl = new InterfaceImpl2();
impl.method2();
Interface2.methodSta1();
System.out.println(Interface2.NUM_OF_CLASS);
}
}
接口注意事项
多态(multi)
public class DemoMulti {
public static void main(String[] args) {
Fu obj = new Zi();
obj.method();
obj.methodFu();
System.out.println(obj.num);
}
}
class Fu {
int num = 10;
void method(){
System.out.println("父类方法");
}
void methodFu(){
System.out.println("父类特有方法");
}
}
class Zi extends Fu {
int num = 20;
void method(){
System.out.println("子类方法");
}
}
多态的向下转型与instanceof
内部类
class Body {
int num = 10;
public class Heart {
public void methodHeart(){
System.out.println("成员内部类方法");
}
int num = 20;
public void methodNum(){
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(Body.this.num);
}
}
public void methodOuter(){
class Inner {
int num = 10;
public void methodInner() {
System.out.println(num);
}
}
Inner inner = new Inner();
inner.methodInner();
}
public void methodBody() {
System.out.println("外部类方法");
}
public void bodyHeart() {
Heart heart = new Heart();
heart.methodHeart();
}
}
public class DemoInnerClass {
public static void main(String[] args) {
Body body = new Body();
body.bodyHeart();
body.methodOuter();
Body.Heart heart = new Body().new Heart();
heart.methodHeart();
heart.methodNum();
}
}
匿名内部类
interface MyInterface {
public void method();
}
public class NImingInnerClass {
public static void main(String[] args) {
MyInterface obj = new MyInterface() {
@Override
public void method() {
System.out.println("匿名内部类实现了方法");
}
};
obj.method();
}
}