实现看见一个人,我们对它说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. 接口测试中如何保持session鉴权/会话

    当接口使用token鉴权时,可以直接在响应数据中提取token的值,关联到其他接口使用 如果接口使用的是session鉴权,可以使用session=resquests.Session()方法,创建一个 ...

  2. atcoder ABC237-E Skiing

    atcoder ABC237-E Skiing 传送门 这题把一个点到另外一个点的开心值变为这条边的权值,就可以化为求最大路.因为有负边权,所以要用\(SPFA\),但\(SPFA\)这玄学的时间复杂 ...

  3. How to disable ipv6 in ubuntu

    To disable ipv6, you have to open /etc/sysctl.conf using any text editor and insert the following li ...

  4. context之WithTimeout的使用

    1. context包的WithTimeout()函数接受一个 Context 和超时时间作为参数,返回其子Context和取消函数cancel2. 新创建协程中传入子Context做参数,且需监控子 ...

  5. 源码剖析之sun.misc.Unsafe

    首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换. CAS 操作包含三个操作数 -- 内存位置(V).预期原值(A)和新值(B).如果内存位置的值与预期原值相匹配, ...

  6. Postgresql之基础

    Postgresql:  https://www.postgresql.org/ [安装] 删除已经存在的pg: yum remove -y postgresql* && rm -rf ...

  7. Jenkins篇-安装与使用

    Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务.Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通过下载和运行其Web应用程序存档(WAR ...

  8. 无需配对数据的对比学习图像到图像转换,助力跨域物体检测 | BMVC'24

    来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Improving Object Detection via Local-global Contrastive Learning 论文地址:h ...

  9. GUETSEC

    1. GUETSEC栈溢出 可以看到它看起来好像有四个栈溢出,我们逐个点进去 __isoc99_scanf("%20s", v1):限制了读取20个字符串(但其实无法完全杜绝缓冲区 ...

  10. uni-app开发的app版本更新

    标签: uni-app 版本更新 前情 uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni-ap ...