static静态+包和导包+访问权限+getter和setter+继承+super关键字+方法的重写+多态

static静态

这张图的问题是有多少人就会打印多少次 国家是什么

我们可以在开始时对其定义为静态变量,这样在后面它会默认对国家一栏全为大清。

并且static所对应内容是共享的,在22行我们将其中一个人的国家改为民国,会发现两个人都变化了。

但是我们不推荐通过对象去访问设置的静态内容,也就是a.country"民国"尽量不要使用。

这是因为static是属于类的,尽量通过类名去访问。

特点:

  1. 数据共享

  1. 属于类的,不属于对象

  1. 优先于对象产生

通用构造器,静态构造器

创建对象的过程(简单)

打印顺序:

  1. 静态构造器2.通用构造器3.构造方法->创建对象

由于创建对象的过程是在静态内容加载完成之后,在静态方法和静态块里面不能使用this

静态的内容使用类命去访问

在静态方法里调用静态的东西是可以的

包和导包

包:其实本质上就是文件夹

在代码中需要写package+包名

导包:import+包+类

这是被导入的包package1

第三行操作:导入被导入的包

不需要导包:

  1. 即是在自己包里

  1. 在java.lang下所有内容不需要导包

如:String System.out.println

访问权限

  1. public 公共访问权限

  1. default 访问权限,平常用到的例如String name,在自己包内可以随意访问

  1. private 私有的

我们可以发现,在自己包内定义三种权限后调用是没有什么问题的。

在其他的包内用的话,就会出错,只有公共的才能使用

在同一个包下的不同类的呢?

私人private行不通

一般情况下publicprivate用的最多

getter和setter

用处:在成员变量用private声明后,保护变量不被胡乱赋值

用人话讲就是,当在其他包里或者同包的不同类里想使用private定义的成员变量,可以使用写入getter和setter的方式。

以下为定义private的类

以下为在同一个包内不同类

以下为在不同包里

getter,从成员变量中获取数据

setter,给成员变量赋值,做一定保护

注:getter和setter可以自动生成

idea用户可以在空白位置点击右键,generate中选择getter和setter,再全选即自动生成。

eclipse用户在写入private后会出现警告,根据提示内容可以直接点击自动生成。

继承

继承:子类可以自动拥有除了父类private以外的所有内容

当出现x是y的一种的时候,x就可以继承y

public class 类 extends 父类{
}

作用:简化代码的开发

子类对父类进行了扩展

以下作为父类

以下作为子类

拓展内容即是父类中没有的

以下是写入main方法 作为入口调用定义好的"父类"(实际上定义的是子类,但子承父业)

第五行,其实是小牛怪(子)不是大牛怪(父)

第九行,在大牛怪中定义的,因为是private类型,所以不可用

以下为输出结果:分别是6 8 11行输出的结果

super关键字

super:父类中的内容

this:子类中的内容

super和this用来区分父类和子类相同的部分

父类:

子类:

结果:

总结:在子类中没有name,所以会借用父类中的name

那么,我们在子类中定义name,父类不变的情况下会出现什么呢?

总结:如果子类中有定义的name,会使用子类中定义的name作为this.name。如果没有才会考虑父类。

那么,如何既使用父类又使用子类呢?

我们需要用到上述的super。

如图,super.name用来表示的是父类的关键字,所以会带出父类。

除此以外,super还可以调用父类中的构造方法,必须写在子类构造方法的第一行,如果父类是无参数的,可以不用写有参数必须写

例如第一张图第五行hero括号中有String a,那么第二张图第十行括号内就也要有String a

方法的重写

重写:子类对父类提供的方法重新定义

语法:子类和父类声明的方法完全一致

重写又被称为方法的覆盖

以下先在父类中写入方法,在子类中调用

接着我们要在子类中写一个和父类中方法语法相同的方法,目的是验证方法的重写

在父类不做任何改变的情况下,子类如下

我们可以看到,最后还是用的子类的方法,这就是方法的重写

如果想要将父类中的方法也一起使用,那我们就需要用到上节所学的知识

使用super即可

多态

多态:同一个对象拥有多种形态

作用:把不同的数据类型进行统一,让程序员有超强拓展性

例:写一个人去喂养猫和狗的代码

小猫的

小狗的

人去喂

main方法

总结:我们会发现,每加一个小动物,都要在person类中加一个weieat的新方法,操作起来冗杂反复,如果我们运用多态的知识,其实就会很方便。

小猫和小狗继承了animal

人也不需要一个一个去喂了,只需要使用调过来的animal类型的变量,再对应去找是哪个动物(猫或狗),并执行相应动作

main方法中因为猫和狗继承了animal,所以可以将子类对象赋值为animal类型,再通过人去执行动作(第八九行内容)。

定义的animal

小知识点

  1. 把子类的对象赋值给父类的变量--->向上转型

  1. 把父类的变量赋值给子类的变量--->向下转型

向下转型有风险 涉及到强制转型

(需要转换的类型)变量

面对对象练习

要求:在lol cs dnf三款游戏中选择并play

分析:需要写三个类分别是三款游戏,然后用到上节多态知识,把他们归类于父类game中,再创建一个用户person的类去调用他们,最后写一个main方法创建所有对象。

game

lol

dnf

cs

用户

客户端

执行结果可自试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值