面向对象
抽象类
package oopzong.oop.oop7;
//abstract 抽象类 : 类 extends :单继承 (接口可以多继承)
public abstract class Action {
//约束~有人帮我们实现
//abstract,抽象方法,只有方法名字,没有方法的实现
public abstract void doSomething();
22
//不能new这个抽象类,只能靠子类去实现它:约束!
//抽象类中可以写普通的方法~
//抽象方法必须在抽象类中
//抽象的抽象:约束~
}
package oopzong.oop.oop7;
//抽象类的所有方法,继承了它的子类,都必须要实现它的方法~除非子类也是抽象类
public abstract class A extends Action {
@Override
public void dosomething() {
}
}
思考 抽象类不能new对象存在构造器吗?
(抽象类可以有构造方法,只是不能直接创建抽象类的实例对象而已。在继承了抽象类的子类中通过super()或super(参数列表)调用抽象类中的构造方法。)
抽象类存在的意义是什么
(抽象出来~提高开发效率)
接口
package oopzong.oop.oop8;
//interface 定义的关键字 接口都需要有实现类
public interface UserService {
//常量public static final
//public static final int age = 99;
//接口中的所有定义的方法其实都是抽象的 public abstract可以不写
// public abstract void run(String name);
void add(String name);//增
void delete(String name);//删
void update(String name);//改
void query(String name);//查
}
package oopzong.oop.oop8;
public interface TimeService {
void timer();
}
package oopzong.oop.oop8;
//抽象类:extends
//类可以实现接口implements 接口
//实现了接口的类,就需要重写接口中的方法
//利用接口实现多继承
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 timer() {
}
}
作用
1.约束
2.定义一些方法,让不同的人实现
3.常量public static final
4.方法 public abstract
5.接口不能被实例化,接口中没有构造方法
6.可以实现多个implements
7.实现了接口的类,就需要重写接口中的方法
内部类
内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对于B类来说就是外部类了
1.成员内部类
2.静态内部类
3.局部内部类
4.匿名内部类
package oopzong.oop.oop9;
//Outer外部
public class Outer {
private int id =10;
public void out(){
System.out.println("这是外部类的方法");
}
//Inner内部
public class Inner{
public void in(){
System.out.println("这是内部类的方法");
}
//获得外部类的私有属性
public void getID(){
System.out.println(id);
}
}
package oopzong.oop.oop9;
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
//通过外部类来实例化内部类outer.new Inner
Outer.Inner inner = outer.new Inner();
inner.in();
inner.getID();
}
}
得到:
这是内部类的方法
10
静态(无法得到私有属性)
//Outer外部
public class Outer {
private int id =10;
public void out(){
System.out.println("这是外部类的方法");
}
public static class Inner{
public void in(){
System.out.println("这是内部类的方法");
}
}
}
不是内部,是并行的
package oopzong.oop.oop9;
//Outer外部
public class Outer {
}
//一个java类中可以有多个class类,但只能有一个public class
class A{
public static void main(String[] args) {
}
}
局部内部类
package oopzong.oop.oop9;
//Outer外部
public class Outer {
//局部内部类
public void method(){
class Inner{
}
}
}
没有名字的类
package oopzong.oop.oop9;标签:java,String,void,笔记,41,class,Outer,抽象类,public From: https://www.cnblogs.com/12345ssdlh/p/16824868.html
public class Test {
public static void main(String[] args) {
//没有名字初始化类,不用将实例保存到变量中
new Apple().eat();
new UserService(){
@Override
public void hello() {
}
};
}
}
class Apple{
public void eat(){
System.out.println("1");
}
}
interface UserService{
void hello();
}