学习来源: B站【狂神说Java】Java零基础学习视频通俗易懂

static关键字详解

package com.oop.demo07;

//static
public class Student{
private static int age;//静态变量
private double score;//非静态变量 public void run(){
go();
}
public static void go(){ } public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.score);
System.out.println(s1.age);
System.out.println(Student.age);
//System.out.println(Student.score);会报错,非静态变量
new Student().run();
go(); } }
package com.oop.demo07;

//final修饰后无法被Student类继承
public final 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();
/*
静态代码块
匿名代码块
构造方法
==================
匿名代码块
构造方法
*/
}
}
package com.oop.demo07;
import java.lang.Math;
//静态导入包
import static java.lang.Math.random;
public class Test {
public static void main(String[] args) {
System.out.println(Math.random());
System.out.println(random());//静态导入包后可直接使用
}
}

抽象类

  • abstract修饰符可以用来修饰方法也可以用来修饰类,如果修饰方法,那么该方法就是抽象方法,如果修饰类,那么该类就是抽象类

  • 抽象类中可以没有抽象方法,但是抽象方法的类一定要声明为抽象类

  • 抽象类,不能使用new关键字来创建对象,他是用来让子类继承的

  • 抽象方法,只有方法的声明,没有方法的实现,他是用来让子类实现的

  • 子类继承抽象类,那么必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类

package com.oop.demo08;

//abstract 抽象类   类 extends:单继承  (接口可以多继承)
public abstract class Action { //约束,有人帮忙实现
//抽象方法,只有方法名字,没有方法的实现
public abstract void doSomething(); //抽象类里可以写普通方法
public void hello(){ } public Action(){ } //抽象类的特点
//1. 不能new这个抽象类,只能靠子类去实现他。约束!
//2. 抽象类里可以写普通方法
//3. 抽象方法必须在抽象类中
/*
思考题
1.抽象类中存在构造器吗?
2.抽象类存在的意义是什么?
*/
/*
1.存在构造器
即使你没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话你的子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super()。
扩展
- 有抽象方法的类一定是抽象类
- 是抽象的类不一定要有抽象方法
- 无法通过new实例,通过继承
- 子类必须实现所有的父类抽象方法,否则也要注明abstract
2.抽象出来,提高开发效率。
更利于代码的维护和重用。
*/ }
-----------------------------------
package com.oop.demo08; public class A extends Action{
@Override
public void doSomething() { }
}

接口的定义与实现

  • 普通类:只有具体实现

  • 抽象类:具体实现和规范(抽象方法)都有!

  • 接口:只有规范!自己无法写方法,专业的约束!约束和实现分离:面向接口编程

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能..”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。

  • 接口的本质是契约,就像我们人间的法律一样,制定好后大家都遵守

  • OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了对象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象

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

package com.oop.demo09;

//interface 定义的关键字
public interface UserService { //常量~ public static final
int AGE = 99; //接口中的所有定义的方法其实都是抽象的 public abstract
void run();
void add(String name);
void delete(String name);
} /*
接口的作用:
1. 约束
2. 定义一些方法,让不同的人实现
3. public abstract
4. public static final
5.接口不能被实例化~,接口中没有构造方法~
6. implements可以实现多个接口
7.必须要重写接口中的方法 */ ----------------------------------------------------
package com.oop.demo09; public interface TimeService {
void timer();
} -----------------------------------------------------
package com.oop.demo09; //类可以实现接口 implements 接口
//实现了接口中的类,就需要重写接口中的方法 // 多继承 利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService{
@Override
public void run() { } @Override
public void add(String name) { } @Override
public void delete(String name) { } @Override
public void timer() { }
}

内部类(暂时了解即可)

内部类就是在一个类的内部在定义一个类,比如,A类中定义了一个B类,那么B类相对A类来说就称为内部类,而A类相对于B类来说就是外部类

  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类(重点)
  5. lambada表达式

学习笔记-Java面向对象的更多相关文章

  1. 我的Java学习笔记-Java面向对象

    今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...

  2. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  3. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  4. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  5. UML和模式应用学习笔记-1(面向对象分析和设计)

    UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...

  6. Lua学习笔记:面向对象

    Lua学习笔记:面向对象 https://blog.csdn.net/liutianshx2012/article/details/41921077 Lua 中只存在表(Table)这么唯一一种数据结 ...

  7. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  8. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  9. 疯狂java学习笔记之面向对象(一) - 定义类、方法、构造器

    Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. ja ...

  10. 学习笔记——Java类和对象

    今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...

随机推荐

  1. spring注入静态变量有几种方法?不看的都掉坑里了!

    springboot中经常会用到properties文件中的配置,一般使用@Value注入,但是针对Utils工具类,需要注入一个静态变量有几种方法?为什么有的同学注入的值为null? 代码示例 如果 ...

  2. Fiddler抓手机APP包

    *手机和电脑连接在同一wifi下 *fiddler设置 *启动Fiddler,打开菜单栏中的 Tools > Fiddler Options,打开"Fiddler Options&qu ...

  3. .Net Framework创建grpc

    1.环境要求 .Net Framework 4.8 .Net Core 版本: https://www.cnblogs.com/dennisdong/p/17120990.html 2.Stub和Pr ...

  4. 简单搭建react开发环境

    目录 前言 一.node.js使用 二.vscode 1.打开文件 2.运行 3. 第一个react程序,从helloworld写起 总结 前言 安装前需要安装:node.js.vscode 一.no ...

  5. ubuntu安装deb时出现Unknown media type in type 'chemical/......

    Unknown media type in type 'chemical/......我找到了文件/usr/share/mime/packages/chemical-mime-data.xml. 在文 ...

  6. Thymeleaf的内置对象、SpringBoot整合Thymeleaf和JDBC

    Thymeleaf的对象 Thymeleaf是直接支持访问Servlet web的原生资源,HttpServletRequest HttpServletResponse HttpSession Ser ...

  7. CF1250C Trip to Saint Petersburg

    题目传送门 思路 线段树入门题. 不妨固定一个右端点 \(r\),把所有右端点小于 \(r\) 的区间都在 \(1\) 至此区间的左端点处 update 一个 \(p\),然后每次都给区间 \(1\) ...

  8. Gridea,一个小而美的博客梦想桥梁

    欢迎到我自己搭建的博客查看最新最全的这篇文章,效果更佳- 备注:本文叙述操作过程非常详细,会稍现冗长,可以适当的跳读. 引子 相信大家应该已经非常了解GitHub pages了,他是一个基于githu ...

  9. CSS 定位position

    .link span { position: absolute; top: 0; left: 50%; transform: translateX(-50%); }

  10. 【前端】js实现图片自适应

    一.问题分析 既然要实现图片自适应,那就要对不同的图片尺寸进行分类处理,我最开始是分了5类 对于长宽都不超过的情况 -- 应该不改变图片本身比例 对于长宽都超过的情况 -- 应该是根据图片比例进行缩小 ...