首页 > 编程语言 >java学习笔记41

java学习笔记41

时间:2022-10-25 15:15:57浏览次数:53  
标签:java String void 笔记 41 class Outer 抽象类 public

面向对象

抽象类

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;

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();
}

标签:java,String,void,笔记,41,class,Outer,抽象类,public
From: https://www.cnblogs.com/12345ssdlh/p/16824868.html

相关文章

  • JavaScriptDOM节点操作:parentNode、children、nextElementSibling、previousElementS
    元素.parentNode:获取元素的最近一级父级节点父元素.children:获取所有子元素元素.nextElementSibling:获取元素的下一个同级元素元素.previousElementSibling:获取元素的上......
  • 619 Javascript_对象_Date and 620 Javascript_对象_Math
    Javascript_Boolenan1.创建  newBoolean(value);   //构造函数  Boolean(value);      //转换函数2.方法toStri......
  • 脚本将 Java 包打为 docker 镜像并重启
    DockerfileFROMopenjdk:11.0.16-jreADDbp.jarbp.jarEXPOSE9090ENTRYPOINT["java","-jar","-Dspring.profiles.active=cq","-Duser.timezone=Asia/Shanghai","......
  • HDU 4135 Co-prime
    题目链接:​​传送门​​多组数据问区间内与互质的数的个数区间问题显然要转化成两个区间相减的问题也就是的答案减去的答案这里反过来求不互质的数的个数筛法可以提示我......
  • Luogu P4149 [IOI2011]Race
    题目链接:​​传送门​​#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<complex>#include<algorithm>#include<climits>#include<......
  • Luogu P4105 [HEOI2014]南园满地堆轻絮
    题目链接:​​传送门​​明显的二分简单的check我的没有longlong会炸掉50分#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<comple......
  • Luogu P2412 查单词
    题目链接:​​传送门​​做完这个题感觉我是个沙雕在越做越麻烦的道路上一去不复返我真傻,真的(会有大量冗余变量)#include<iostream>#include<cstdio>#include<cstring>......
  • VA41 销售合同创建BAPI
    一、事务代码VA41合同创建的过程和销售订单几乎一致  二、调用BAPI调用BAPI为BAPI_CONTRACT_CREATEFROMDATA传参和销售订单BAPI:BAPI_SALESORDER_CREATEFROMDAT2一......
  • JavaScript对象Function和JavaScript对象Array
    JavaScript对象FunctionFunction:函数(方法)对象1.创建:1.varfun=newFunction(形式参数列表,方法体);......
  • Vue笔记20 网络封装axios、模拟httpbin.org
                 ......