static、抽象类、接口、内部类

一.static关键字详解

1.静态的变量/方法

package Demo02;

//static
public class Student { private static int age;//静态的变量 多线程
private double score;//非静态的变量 public void run(){ } public static void go(){ } public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age);
//System.out.println(Student.score);报错
System.out.println(s1.age);
System.out.println(s1.score); Student.go();
go();
//Student.run();报错
new Student().run();
}
}

2.静态代码块

package Demo02;

public class Person {
//2:赋初始值
{
//代码块(匿名代码块)
System.out.println("匿名代码块");
} //1:只执行一次
static {
//静态代码块
System.out.println("静态代码块");
} //3
public Person() {
System.out.println("构造方法");
} public static void main(String[] args) {
Person person1 = new Person();
System.out.println("==========================");
Person person2 = new Person();
// 静态代码块
// 匿名代码块
// 构造方法
// ==========================
// 匿名代码块
// 构造方法
}
}

3.静态导入包

package Demo02;
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI; public class test {
public static void main(String[] args) {
//未导入包时书写
System.out.println(Math.random());//随机数
//导包后书写
System.out.println(random());
System.out.println(PI);
}
}

二.抽象类


1.抽象类

package Demo03;

//abstact   抽象类:类   extends:单继承
//接口可以多继承
public abstract class Action { //约束~有人帮我们实现~
//abstract 抽象方法,只有方法名字,没有方法实现
public abstract void doSomethig();
}

2.抽象类继承

package Demo03;

//抽象类的所有类方法,继承了他的子类。都必须要实现它的方法
//除非子类本身也是abstract
public class A extends Action {
@Override
public void doSomethig() { }
}


三.接口

声明类的关键字是class,声明接口的关键字是interface


1.接口UserService

package Demo04;

//interface定义的关键字,接口都需要有实现类
public interface UserService {
//接口中的所有定义,其实都是抽象的 public abstract
//public abstract void run();如下 //常量 public static final int age = 99;
int age=99; void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}

2.接口TimeService

package Demo04;

public interface TimeService {
void timer();
}

3.实现类

package Demo04;

//抽象类   extends
//类可以实现接口 implements
//实现了接口得类,必须要重写接口中的所有方法 //多继承~利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService {
@Override
public void timer() { } @Override
public void add(String name) { } @Override
public void delete(String name) { } @Override
public void query(String name) { } @Override
public void update(String name) { }
}


四.内部类


package Demo05;

public class Outer {
public void methor(){
class A{
//局部内部类
}
} private int id=10;
public void out(){
System.out.println("这是外部类的方法");
} //一个java文件中可以有多个class类,但是只能有一个public class
class Inner{
public void in(){
System.out.println("这是内部类的方法");
} //获得外部类的私有属性
public void getID(){
System.out.println(id);
}
}
}

package Demo05;

public class Application {
public static void main(String[] args) {
//new
Outer outer = new Outer();
//通过这个外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.in();
inner.getID();
} }

ps:这里现阶段不是很懂也没关系。。。以后还会详细说

Day15-static、抽象类、接口、内部类的更多相关文章

  1. Java入门教程十(抽象类接口内部类匿名类)

    抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...

  2. 【Java】对象、类(抽象类与内部类)、接口

    博文内容概况 对象和类 抽象类 接口 内部类 对象和类 对象是对客观事物的抽象,类是对对象的抽象.类是一种数据类型,其外观和行为由用户定义.类中可以设置两种类型的元素:字段(有时被称为数据成员)和方法 ...

  3. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  4. JavaSE学习总结(六)——接口、抽象类、内部类

    一.不需要实例化的原因 看一个示例: package com.zhangguo.chapter5.s1; /**动物园*/ public class Zoo { public static void ...

  5. 06 面向对象:多态&抽象类&接口&权限修饰符&内部类

    多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...

  6. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  7. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口

    目录 Java简介 Java语言基础组成 面向对象 对象 封装 构造函数 this关键字 static(静态关键字) 主函数 静态什么时候用呢? 面向对象(数组工具对象建立) 设计模式 继承 成员变量 ...

  8. Java中:接口,抽象类,内部类

    Java8中的接口 public interface Output { //接口里定义的成员变量只能是常量 //默认使用public static final修饰 int MAX_CACHE_LINE ...

  9. 13. 抽象类 & 接口

    一.抽象类 // 抽象类Shape public abstract class Shape { // 1. 成员变量 private String color; // 2. 初始化块 { System ...

  10. java - day008 - 接口,内部类

    接口 作用: 结构设计工具,用来解耦合,需要有子类,隔离具体实现 接口是一个极端的抽象类 用 interface 代替 class 用 implements 代替 extends // 接口中所有东西 ...

随机推荐

  1. Quartz 2D CGGradient与CGShading实现渐变的绘制

    Quartz 提供了两种不透明的数据类型来创建渐变CGShading 和 CGGradient,你可以使用其中任何一个来创建轴向或径向渐变. 轴向渐变:沿着一个轴方向线性渐变 径向渐变:一个点为原型, ...

  2. Vim与系统剪贴板的复制粘贴

    上次在VirtualBox 安装Ubuntu 的时候有用到 vi/vim 与系统剪贴板的复制粘贴 通用问题,因此记录一下. 开始前需要先查看vim 是否已经支持clipboard功能,使用vim -- ...

  3. vue 添加代理

    1.跟目录下新建vue.config.js文件,添加内容: module.exports = {   assetsDir: 'static',   parallel: false,   publicP ...

  4. Arseed 上传图片 快速入门

    快速入门 为了方便开发者入门,我们部署了 web3infra.dev 方便开发者永存数据.快速入门将介绍如何使用 arseeding-js 将数据存通过 web3infra.dev 存储到 Arwea ...

  5. 在platformio自动上传esp8266固件

    不想每次上传固件的时候手工点按钮,修改这个文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py 在319行UPLOA ...

  6. QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加速高分辨率小目标检测的级联稀疏查询)

    QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加 ...

  7. 芯片ADS9224R的FPGA驱动实现

    ADS9224R这款芯片是德州仪器(TI)的一款SAR ADC,笔者写这芯片IP核大概有段时间了,这款ADC采集芯片挺复杂的.笔者当时对写axi4_lite的IP核还不是很熟悉,就接下了含有这款芯片的 ...

  8. strace 跟踪特定系统调用

    /usrdsk/strace -tt -e trace=write   -p 664 /usrdsk/strace -tt -e trace=%memory   -p 664

  9. WPF BackSpace 回退到上一个页面

    在Wpf程序中,有时候点击到某些控件后,再按下[BackSpace]键,画面会回到上一个 TextBox可能自己处理了,所以没有这一个现象. 解决方案是: 在App.xaml.cs 的 Initial ...

  10. uniapp 配置钉钉小程序package.json文件

    { "uni-app": { "scripts": { "mp-dingtalk": { "title": " ...