IDEA中快捷生成getter/setter的快捷键为 alt+inser(enter)

getter/setter命名规范:都是以gte/set单词开头+要操作的属性名称

一、访问修饰符

Java中有四个关于权限的关键字,权限从小到大为:

1.1.private(当前类内部可见)<default(不需要写这个单词,默认访问权限)包(文件夹)访问权限,当前包的内部可见(子包都不可见!!!!)<protected(继承访问权限),在不同包的父子类之间可见<public(公共访问权限),只要是public权限,随意使用,完全公开

包访问权限,同一个包中,当且仅当当前这个包中同级的所有类之间可见,其他包(包括子包)都不可见。

2.1protected修饰符(可以简单理解为protected权限比包权限多了个包外父子类的权限,就不再同一个包下的时候,protected权限也只有继承是可见)

继承修饰符,不同包(和父类不同包)的父子类可见

例1:protected的访问权限包括同包中的父子类吗?

不同文件夹的父子类之间使用protected都是可见的,更何况还是同一个包,这就更加可见了!!同一个包中,使用包权限都可见,更何况比它还大的protected!

例2:同包中不同类之间(没有继承关系)的protected是否可见?

一定可见===》包权限可见的权限和方法,protected一定具备。

例3:public能否修饰外部类?

不能,假设public class Text()=>Text类定义完之后,就消失不见了,Text的外部完全都不知道他的存在!矛盾!

包的命名规范:包的命名采用全小写,多个单词之间使用_分隔。

二、包权限

可以在不同的包中创建同名的类!==>类似在操作系统的同一个文件夹内不能创建多个同名同类型的文件,但是在不同的文件夹中,可以创建多个同名称同类型的文件。

因此在Java中类的全名称为  包名.类名来唯一的确定一个类。

三、包的导入

1.1、可以使用import关键字来告知编译器入包(inport关键字表示在Java中导入某个包中具体的类,无法直接导入一个文件夹)。

1.2、假设一个包中有多个其他类,我们可以使用通配符*来表示导入(import java.util.*;),此时util中的所有类都可以使用了,具体导入哪个就导入哪个。

1.3使用通配符也有个问题,就是当同一个类中使用多个不同包的同名类,就会产生冲突。(这时时还是显示导入某个具体类即可,不要使用通配符。即包名.类名)

1.4静态导入:要使用静态导入类下的所有静态方法就只需要调用方法名称即可,就好像这些方法是自己定义的一样。

四、JDK中常见的包

1.java.lang:系统常用的基础类:String,Object(万物之母),Math,这个包在JDK1.1之后自动导入。

2.java.lang.reflect:反射开发包,反射式是所有框架的基础。

3.java.util:java提供的工具开发包(所有集合ArrayList,Linkedlist,HashMap等都在这个包中)。

4.java.sql:java数据库开发相关的包。

5.java.io:io开发包(文件的操作)。

6.java.net:网络编程开发包 Socket。

五、继承

1.1将若干个不同的类之间相同的属性和方法抽象为一个共同的父类,子类只需要扩展自己类中独有的属性和方法即可,把当前这种编程属性,称之为“继承”。(代码的复用,方便进行子类的功能扩展,子类只需要实现自己额外的属性和功能即可,共有的特性以及行为放在父类中)

1.2要想使用“继承”,能发生继承的类之间必须满足is a原则!!!!!(例:dog is a aminal;cat is a aminal)

1.3在JAVA中使用extends表示继承一个父类,父类中的所有属性和方法都会被子类继承下来,子类只需要关心实现自己独有的属性和行为即可,大大减少了重复的代码,扩展新的子类就更加容易。

2、继承的使用规则:

2.1 在JAVA中,类的继承是单继承,一个类只能使用extends关键字继承一个父类!

2.2 Java中不允许多重继承,但是允许多层继承。一般多层继承最多不超过3层关系。

3.显示继承和隐式继承

3.1 隐示继承(父类中的某些方法和属性,子类继承下来了,但是无法直接使用)和显示继承(父类中的某些方法和属性,子类继承下来了,随意使用)

4、访问父类的属性

4.1 访问父类的属性:子类想要直接访问父类的属性,父类中的属性权限必须>=protected

若显示继承,使用父类的属性,可以直接使用(子类中没有和父类同名称的属性),若子类也定义了父类相同名称的属性,则遵从就近原则(先在方法中寻找->再到当前类的内部(即子类中)->最后向上去父类中寻找同名变量。)

例:若父类和子类变量名称相同,但是类型不同,那访问谁?

只要在子类中定义了和父类名称相同的属性,无关类型使用相同名称时,调用的都是子类中覆盖后的变量!

5、 super关键字

5.1 如果想要在子类中调用被覆盖的父类中同名属性,super修饰属性,明确表示从父类中寻找同名属性。

5.2 super.方法名称表示从父类中寻找方法属性。

5.3super调用父类中的构造方法

a、若调用的是父类的无参构造,则可以不用写。

b、若调用的时父类的有参构造,则必须显示使用super(参数列表),明确表示先调用父类的构造方法。

使用super关键字调用方法注意事项:1、在子类中调用父类的构造方法必须放在子类构造方法的首行。2、this(this的构造方法调用也得放在在首行)和super表示构造方法调用时,不能同时出现

5.4super和this关键字的不同与相同点

this可以表示当前对象的引用,但是super没有这个特点,只能引用父类的属性和方法,super在引用父类的构造方法时必须放在首行;this和super都表示成员域的属性,这俩关键字都不能在静态域中直接使用

6、 子类中调用父类的方法(重点)

6.1 方法重写(override)发生在有继承关系的类之间,子类定义了和父类除了权限不同以外其他全部完全相同(名称,参数列表,返回值都相同)的方法,称之为重写。

6.2 子类重写后的方法权限>=父类的权限

6.3 在子类中调用被重写后的父类方法,使用super.方法名称()表示直接从父类中寻找同名方法。

7、关于父子类对象的产生

7.1 当调用子类构造方法产生子类对象时,JVM会首先调用父类的构造方法先产生父类对象而后在产生子类对象。

六、多态(依赖于继承与方法重写实现)

多态:同样的方法,在使用不同的对象调用时,表示出不同的行为称之为“多态”。

多态同样的一个方法的多种状态(在JAVA中多态依赖于继承+方法重写来实现多态性)。

1 final关键字

1.1、final修饰的属性-->a、final修饰基本数据类型,数值在定义后无法修改。(final int a=10-->a就是一个常量,定义后无法修改,只能保存10);b、final修饰引用数据类型,值不能修改,这个值指的是引用保存的地址不能修改!地址中的内容还是可以修改的。

1.2、final修饰方法-->被final修饰的方法不能被重写!(不允许子类覆盖).

1.3被final修饰的类不能被继承,final修饰的类没有子类。

2.1、在类中定义常量时,一般搭配static(定义在方法区,共同使用,避免空间的浪费)一起使用(不强制,一般来说定义类中的常量,都是静态全局常量)

3.1、常量的命名规则:

常量使用全大写命名,多个单词使用_分隔,常量必须在定义时赋值(不存在默认值)。

final AGE=10;

final String STUDENT_NAME=“小明”;

七、向上转型

对象的向上转型其实有点类似于基本数据类型的小类型提升为大类型,自动提升。

向上转型,new子类实例,子类实例的天然就是父类的包含的范围之内,满足天然的is a原则。

向上转型的优点:

1、参数统一化,方便进行子类的扩展。(假设现在要实现一个方法,接受所有Aminal以及其子类的对象,没有向上转型,只能当前类型的引用指向当前类型,若现在Aminal有成百上千个。这个方法就的重载成百上千次,但有了向上转型,参数统一化,只需要在方法形参规定父类的引用,所有子类对象都能够使用父类引用来接受。)

2、向上转型可以方便进行子类的扩展。

1.1、对象向上转型发生在以下三个位置:

1.1直接赋值

父类名称  父类引用=new 子类实例();

父类引用.方法名称()=>若这个方法被new出来的子类重写,则调用的一定是重写后方法。

Aminal animal=new Dog();

1.2方法传参

1.3方法的返回值

八、向下转型

1.1.方法的重载:重载发生在同一个类中,方法名称相同,参数列表不同,与返回值无关。

2.1.方法重写override:发生在有继承关系的类之间,子类定义了和父类除了权限不同(子类权限>=父类权限),返回值可以为向上转型类的返回值之外,参数列表,方法名称完全相同的方法,就称之为方法重写(是对非privat修饰,非final修饰,非构造方法等的实现过程进行重写缩写)。

例1.:父类是private权限,子类是public权限,能否重写?

不能!!私有方法无法被重写(同时当一个方法被final(属性:final修饰的属性不能改;final修饰的方法不能重写;final修饰的类不能有子类)修饰,说明该方法也不能被重写)。

例2.static修饰的静态方法能否被子类重写???

不能!!因为静态方法是归属与某个类,与对象无关,因此静态方法不存在方法重写。

例3.构造方法能否被子类重写?

不能!!名字不同;构造方法是为了产生对象,无法在子类中修改父类对象如何产生的。

关于方法重写的返回值,必须相同(除了向上转型类的返回值之外,其他返回值,只要不相同都不能覆写)

3.1.父类名称 父类引用=new 子类实例();

3.2.通过父类引用.操作的属性和方法,要看父类中是否有这些属性和方法;若存在,判断当前调用的这个方法是否被子类重写,若重写,则调用的时子类重写后的方法。

3.3.可以使用注解@Override检查是否覆写成功。                ·

4.1.向下转型的两点说明:

1、要想发生向下转型,必须首先先进行向上转型。

2、类型转换有风险,不能将毫无关系的两个类之间进行强转。

可以使用关键字instanceof来协助进行向下转型,只要能进行向下转型的引用,instanceof关键字才会返回true。

访问修饰符、常见的包以及包的权限和包的导入(inport关键字)、继承(super关键字)、多态(向上和向下转型)相关推荐

  1. java默认访问修饰符是,java默认访问修饰符

    java.lapplet.Applet D. java.awt.Frame XXX13.下列选项中,哪个方法不是 JAVA 的访问修饰符(C) A. private B. protected C. f ...

  2. java进阶之匿名内部类,访问修饰符,包

    文章目录 一.形式参数和返回值 二.包 1.包 2.导包 三.权限修饰符 1.权限修饰符: 2.常见的权限修饰符 四.内部类 一.形式参数和返回值 (1)形式参数: 类名:需要该类的对象 抽象类名:需 ...

  3. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

  4. JAVA面向对象OOP→构造方法、this、访问修饰符、static、方法重载、JVM内存分配、GC垃圾回收、包、样例代码

    构造方法 构造方法(constructor):与类名同名,没有返回值 其初始化作用:一为属性分配内存空间.二为属性赋值 构造方法不能自己调用,只能通过new实例化对象调用 隐式构造方法:对象实例化时编 ...

  5. 包机制、访问修饰符、Jar包 java初学 面向对象五

    包机制 问题:当定义了多个类的时候,可能会发生类名的重复问题. 在java中采用包机制处理开发者定义的类名冲突问题. 怎么使用java的包机制呢? 使用package 关键字. package 包名. ...

  6. Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制

    目录 面向对象编程(中级部分) IDE(集成开发环境)-IDEA IDEA介绍 IDE(集成开发环境)-Eclipse Eclipse介绍 IDEA的安装 IDEA的基本介绍和使用 创建一个java项 ...

  7. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  8. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  9. 关于Java中各种修饰符与访问修饰符的说明

    关于Java中各种修饰符与访问修饰符的说明 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 ...

最新文章

  1. pandas 删除 csv 中 unnamed 列
  2. Android系统源码学习——ramdisk.img、system.img、userdata.img三个文件介绍
  3. 同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO
  4. python 列联表自动拆分_python自动化办公:实现按照一列内容拆分excel
  5. emui10如何降级_如何评价EMUI10按包名降分辨率机制的行为?
  6. 这10个好习惯助你成为优秀的程序员
  7. mysql和oracle的通用存储,MySQL与Oracle在使用上的一些区别
  8. 下一个全排列_下一个排列
  9. 浅谈测试职业的发展空间
  10. Unity Shader _Time 的单位
  11. [Spark]Spark RDD 指南二 初始化
  12. 免费的配音软件,堪比魔云熙声音。
  13. 商标查询工具入口国家知识产权局和阿里云第三方查询工具
  14. Delphi中三种延时方法
  15. Android文件解压
  16. daimayuan每日一题#851 Good Permutations
  17. ESP8266 Arduino Hard resetting via RTS pin...
  18. vvic API 接入说明
  19. ArcGIS 栅格计算器 Con用法
  20. GitHub入门与实践(四)——Git的基本操作从初始化仓库到确认提交是否成功

热门文章

  1. Threejs初教程
  2. 察人是否可信的“秘密”
  3. c语言1000内所有素数组成的集合,【汇编程序】实现输出1000以内所有素数
  4. 微信jsapi获取用户地理位置接口开发(第八课)
  5. python123天天向上的力量b_python编程题3.1:天天向上的力量
  6. 新型跨境电商平台如何选择?新手做跨境电商如何起步?
  7. 微信小程序控制开关 控制io口 控制灯
  8. 读书笔记1.2—《时间管理:如何充分利用你的24小时》—让你时间发挥最大效用
  9. java 新达达_互联网的众包模式是怎么产生和兴起的,这种模式应用到不同的业务上会有哪些问题?...
  10. 后端基础入门技术栈简单小结(非常简单)