实现看见一个人,我们对它说hello

public class study01 {
public static void main(String[] args) {
Me me = new Me();
me.SayHello(new ZhangSan()); } }
// 定义了一个抽象类;
abstract class Person {
public abstract String name();
} class Me{
public void SayHello(Person Person){
System.out.println("你好" + Person.name());
}
} class ZhangSan extends Person{
public String name(){
return "shangsan";
}
} ps:上面这个代码主要是想说:类的名称并不重要;
我们只是想使用类中的方法;
如果这里我们还想给:王五,王六说你好;
是不是还要添加一个王五类,王六类;
这样太麻烦了。我们可以使用匿名类

匿名类的引入

在某些场景下,类的名称并不重要;我们只想使用类中的方法;
这个时候我们可以采用特殊语法;匿名类
public class study01 {
public static void main(String[] args) {
Me me = new Me();
// 这样我们就不需要再去写一个王六类,王七类了
me.SayHello(new Person(){
public String name(){
return "wamgliu";
}
});
}
}
// 定义了一个抽象类;
abstract class Person {
public abstract String name();
} class Me{
public void SayHello(Person Person){
System.out.println("你好" + Person.name());
}
} class ZhangSan extends Person{
public String name(){
return "shangsan";
}
}

接口可以通过类来实现,毕竟接口也是一种规范;

public class study01 {
public static void main(String[] args) {
// new Brid().fly(); new Fly(){
public void fly(){
System.out.println("使用飞行器飞行");
}
}.fly(); }
} // 声明的是抽象接口
interface Fly {
// 这是一个抽象方法;因为接口中的方法是抽象方法
// 同时接口中定义的属性都是常量
public void fly();
} class Brid implements Fly{
public void fly(){
System.out.println("开始飞行");
}
}

Bean的规范

Bean的规范要求:
1.类的要求必须是无参,公共的构造方法;
2.属性必须私有化,然后提供公共的get,set方法

Bean规范实现登录逻辑

ublic class study01 {
public static void main(String[] args) {
User user1 = new User();
// 给属性设置值
user1.setAccount("admin");
user1.setPassword("123");
// 调用登录方法
System.out.println(login(user1));
} // 登录方法
public static Boolean login(User user){
if(user.getAccount()== "admin" && user.getPassword()=="123"){
return true;
}else {
return false;
}
}
} // Bean规范
class User {
private String account;
private String password; // 提供账号
public String getAccount(){
return account;
}
// 提供密码
public String getPassword(){
return password;
} // 设置密码,因为没有返回值,所以我写上void
public void setPassword(String password){
this.password = password;
}
// 设置用户名;; 因为没有返回值,所以我写上void
public void setAccount(String account){
this.account = account;
}
}

如果属性和局部变量名称相同,如果访问是不加任何修饰符,优先访问局部变量;

public class study01 {
public static void main(String[] args) {
User u =new User();
u.test(); // 输出的是-lisi
}
}
class Person26 {}
class User extends Person26{
// 这是一个属性
public String name="wangwu";
public void test(){
// 这是一个局部变量
String name ="lisi";
System.out.println("名称:"+ name);
}
}

如果没有局部变量,访问的是属性

public class study01 {
public static void main(String[] args) {
User u =new User();
u.test(); // 输出的是-wangwu
}
} class Person26 {} class User extends Person26{
// 这是一个属性
public String name="wangwu";
public void test(){
// 如果没有局部变量,访问的是属性
// String name ="lisi";
System.out.println("名称:"+ name);
}
}

父类和子类有相同属性,优先访问子类属性,如果子类没有,然后访问父类属性

ublic class study01 {
public static void main(String[] args) {
User u = new User();
u.test(); // 输出的是-wangwu
}
} class Person26 {
public String name="zhangsan";
} class User extends Person26{
// 这是一个属性
public String name="wangwu";
public void test(){
System.out.println("名称:"+ name);
}
}

java中匿名类,Bean规范,全局变量的更多相关文章

  1. Java中匿名类的两种实现方式(转)

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

  2. java中匿名类的讲解

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象 ...

  3. java中匿名类的注意细节

    abstract class Outer{ int num; public Outer(int x){ num = x; } public abstract void show1(); public ...

  4. Java通过匿名类来实现回调函数

    在C语言中,函数名可以当做函数指针传递给形参从而实现回调 void f1() { printf("f1()\n"); } void f2() { printf("f2() ...

  5. Java程序设计基础笔记 • 【第7章 Java中的类和对象】

    全部章节   >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...

  6. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  7. 第四节:详细讲解Java中的类和面向对象思想

    前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...

  8. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  9. 细说java中的类

    前言 最近在学习<java编程思想> 学到了内部类 类不就是class吗 天天用 还能讲出花来了不成... 其实不然,在java中,类的种类和使用方式多种多样,花样繁多.其中主要有 普通类 ...

  10. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

随机推荐

  1. Linux 文件删除空间没有释放问题

    最近阿里云频频告警.磁盘使用率飙升90%以上.遂查看磁盘使用情况 df -h 发现使用率却是很高 之后,通过du -h --max-depth=1 / 查看哪个目录下占用的资源较多并进行删除 后来发现 ...

  2. Codeforces Round 960 (Div.2)

    A 非常容易观察到性质,注意 Alice 为先手,发现当 \(a_{\max}\) 的个数为奇数时显然能 win,但如果 \(a_{\max}\) 的个数为偶数且有一个数具有奇数个可以作为跳板,那么也 ...

  3. http相关知识要点

    1.TCP/IP协议分为哪几层?每一层主要作用是什么?为什么要分层? 应用层 传输层 网络层 数据链路层 2.HTTP请求有哪些方式? GET:用于从服务器获取资源.不会改变资源状态,无副作用,幂等. ...

  4. JDK 18 及以上使用标准输出流中文输出乱码问题

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 链接:https://stazxr.cn/2024/12/05/JDK-18-以上使用标准输出流中文输出乱码问题/ 来源:終わり ...

  5. Fiddler抓包iOS手机配置全流程

    前情 平时做移动移动端开必的时候经常需要抓包手机,用于接口请求跟踪,但iOS的抓包经常性的配不成功,经过踩过不少坑后终于知道了整个配置流程,此文记录Fiddler抓包iOS手机的配置流程. Step ...

  6. docker compose的安装

    1,安装docker ### CentOS8 默认是会读取centos.org的mirrorlist的,所以一般来说是不需要配置镜像的. # step 1: 安装必要的一些系统工具 sudo yum ...

  7. mysql将公司数据随机挂在部门身上

    1.创建示例数据 CREATE TABLE department_table ( company_code VARCHAR(10) COMMENT '公司编码', company_name VARCH ...

  8. .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门

    .NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门 原文地址:https://devblogs.microsoft.com/dotnet/introducing-aspn ...

  9. 配置 Forwarded Headers Middleware

    来自微软的说明:Configure ASP.NET Core to work with proxy servers and load balancers | Microsoft Learn. 通过该中 ...

  10. shell 获取 目录名 当前目录名

    Four ways to extract the current directory name By  Sergio Gonzalez Duran on November 06, 2007 (9:00 ...