面向对象的三大特性:
封装(encapsulation),继承(inheritance),多态(poymorphism)
Public private
属性都要隐藏;为各个属性设置函数;该隐藏的隐藏,该公开的公开;
Private 只在本类以内使用
Public 公开的 宽
Protected 本包可见,其他包子类可见 到
Default 本包类可见 窄
Private 类内部使用
private 修辞的方法和属性不能被继承,其实是不能访问没有权限。
继承
1、父子类
2、单继承 根 object
3、覆盖
创建子类对象时先一定会创建父类对象
构造方法的第一句
1 、在程序里没有指明调用 哪一个父类的构造方法,jvm会自动调用父类的构造方法,一定调用的是无参。根本类构造方法的声明没有任何关系。
2、显示的写Super,jvm会根据要求调用相应的构造方法
3、在构造方法的第一句是this();先在本类的构造方法之间调用,看被调用的那个本类构造方法的第一句是什么。
Super 指代直接父类对象
多态(只根方法有关)
(*属性只看编译时类型)
Animal a=new Dog();
编译看前边(animal),运行看后边(dog)
Dog b=(Dog)a;
运行时类型不会改变。对象不会应人的主观意识而改变。
对于一个引用只能调用编译时类型里的已知方法。
运行时会自动运行已覆盖过的方法。
运行时多态叫覆盖;
编译时多态叫重载;
Class 类名{
Private 属性(有什么)
无参的构造方法 public 类名(){}
有参的构造方法(给属性赋值)
Set和get (设置属性和获得属性)
业务方法(做什么)
}
封装
1、 属性一般都是隐藏,用访问控制修饰符private隐藏。隐藏后属性只能在类内访问,程序可以根据需要提供get和set,手动写代码实现。
2、
继承:从一般到时特殊的关系,可以设计成继承
特点:共性写在父类里面,特性写在子类
什么样的功能和属性可以继承到子类?对于父类里的属性和方法子类有权访问的,我们称为可以继承
访问控制修饰符:
Private 本类 不可以继承
Default 本包 不一定(同包可继承,不同包不可继承)
Protected 本包和子类 可以继承
Public 公开 可以继承
Override(覆盖) 继承父类的方法后,用自己特殊属性和方法改写父类里面的共性的实
1、发生在子类和父类之间
2、方法名相同,参数相同,返回类型相同
3、访问权限不能更严格,只能等于或者更加宽松
Java只支持单继承,类的继承在树状结构,object是所有类的父类
创建对象的过程
1、分配内存(包括所有的属性的内存,本类属性,父类的共性)
2、创建父类对象
3、初始化本类的实例变量
4、执行本类的构造方法
Super:
Super指代父类构造方法,一般写在子类构造方法的第一句,指明调用父类的哪一个构造方法,默认情况调用的是父类的无参构造方法
Super指代父类对象,调用遮盖的属性或者是被覆盖的方法,指代的是在创建子类对象过程中,由java自动创建的那个父类对象
多态:子类对象可以当成父类对象来用
一个父类型的引用可能指向的是一个子类对象
Super s=new sub();
Sub su=new sub()
Super s=su
S的编译时类型:super 运行时类型:sub
多态的特点:
1、 对象的运行时类型永远不会发生改变;
2、 对一个引用,只能调用编译时类型面定义的方法
3、 运行时会根据运行时类型自动寻找覆盖过的方法运行。
类型的转换:转换编译时类型
Sub su=(sub)s;
子类型的引用向父类型转换时,不需要强转
父类型的引用向子类型转换时,需要强转
Animal a=new cat()
Dog b=(dog)a——类型异常转换
引用 Instanceof 类名——》boolean
引用所指向的对象和类名所代表的类型是否一致
A instanceof animal true
A instanceof cat true
A instanceof dog false
用父类型屏蔽子类对象的差异
Static
Static 修辞 变量:
类的所有对象共同拥有的一个属性,也称为类变量,
跟类创建了多少对象无关
可以用类名直接访问,不需要对象
任何对象对静态变量做修改,其他对象看到的是修改后的值
可以用作计数器,记录类创建对象的个数
在类加载的时候初始化,初始化一次
类加载:jvm在第一次使用一个类时,会根据classpath所指定的路径里去找这个类所对应的字节文件,并读进jvm保存起来,这个过程称之为类加载。
Static修辞 方法:
类的所有对象共同拥有的一个功能
跟类创建了多少对象无关
可以用类名直接访问,不需要对象,所以能直接访问
(在没有对象的情况下)实例变量,在静态方法里不能出现this或者super
Static修辞 初始化块 :
用static修饰类里面的一个独立的代码块
类第一次加载时候执行,执行一次。
有static修辞的变量,初始化块,在类加载时初始化。
先父后子,先静后实例。
Final
类:该类不能被继承,不能被继承意味着不能改变里面的代码
对虚拟机的正常运行有重要作用的类通常是final的,如String math System
方法:该方法不能被覆盖。但是可以继承
变量:Final 修辞的变量就是常量,通常final和static连用来声明常量。
Final修饰应用类型数据,指引用(地址)不能变,内存里的真正数据不受限制。
Final修饰的实例变量:声明的同时赋值,或者构造方法里赋值,只能选择一种
Final修饰的静态变量。声明的同时赋值,或者在静态初始化块在赋值
final修饰的变量就是常量,通常final和static连用来声明
Private修辞的方法也不能被覆盖。是不能继承
――――――――――――――――――――――――――――――――――――
Abstract
类:抽象类,不能手动创建对象。不能创建对象,但是可以声明抽象类型的引用
方法:抽象方法,只有方法名的定义,没有实现,(只定义了能做什么,没有说明怎么做。)
抽象方法允许方法的定义和实现分开。
含有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。
抽象是用来被继承,说明类的共性,给出功能的定义。
抽象类用来被继承,子类继承抽象类,就要实现里面的抽象方法,如果不想让子类也是一个抽象类,就必须实现抽象类里的所有的抽象方法。
多态时使用抽象类
可以声明父类类型子类对象 ,利用多态调用抽象方法。
抽象类有构造方法,只有jvm才能创建抽象类的对象。 Jvm表示虚拟机
Abstact 不能修辞属性。
抽象类可以继承其它类,抽象类可以有父类,也遵循单继承的规律。
Public Private Default Static Final Abstract
可以:
Public static
Private static
Public final
Public static final
不可以:abstract final void eat()
Private abstract void eat()
Static abstract void eat()
Abstract 不能和private、final、static连用。
分享到:
相关推荐
### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...
书中会讲解类与对象的概念,封装、继承和多态三大特性,以及抽象类和接口的使用。读者将学会如何设计和实现具有复杂关系的对象模型,理解面向对象思想在实际编程中的应用。 异常处理是Java程序健壮性的重要保证。书...
《Core Java 1&2》是Java编程领域中两本非常经典的教材,分别对应于卷1和卷2,英文版提供了全面且深入的Java学习资源。这两本书由Cay S. Horstmann和Gary Cornell撰写,是许多程序员入门和进阶Java技术的重要参考书...
2. **类的特性**:类有三个核心特性——封装性、继承性和多态性。封装性通过访问修饰符(public, default, protected, private)控制成员的可见性,隐藏实现细节。继承性允许创建新类时复用已存在的类,新类自动继承...
Java是一种由Sun Microsystems在1995年推出的高级编程语言,现由Oracle公司维护。...以上就是Core Java学习笔记的主要内容概述,涵盖了从基础语法到高级特性的广泛知识,为深入理解和应用Java打下了坚实的基础。
通过阅读《Core Java 2 Volume I》,读者可以系统地学习Java编程,并掌握构建复杂Java应用程序所需的技术。这本书不仅适合初学者作为入门教材,也适合有经验的开发者参考和巩固基础知识。文件列表中的"中国IT认证...
《Core Java 2》是Java编程领域的一本经典著作,主要涵盖了Java语言的核心特性与应用。这份源码包包含了书中所有示例代码,是深入理解Java编程的重要资源。以下是基于这个源码包可以学习到的一些关键知识点: 1. **...
在学习CoreJava时,我们需要掌握以下几个关键知识点: 1. **编程思想**: - 面向对象编程(Object-Oriented Programming, OOP):Java是一种纯面向对象的语言,一切皆为对象,理解类、对象、封装、继承、多态等...
- **特征**:封装、继承和多态是面向对象的三大特性。封装隐藏内部实现,提供公共接口;继承允许子类继承父类的属性和方法;多态则允许使用父类引用指向子类对象,提高代码的灵活性。 - **高级特性**:抽象类、...
根据提供的文件信息,我们可以推断出这是一套关于CoreJava的视频教程。下面将围绕CoreJava的核心知识点进行详细的介绍。 ### CoreJava基础知识 #### Java语言简介 Java是一种广泛使用的、面向对象的编程语言,由...
3. **封装**:封装是面向对象的三大特性之一,它隐藏了对象内部的实现细节,仅通过公共接口(方法)与外界交互,增强了代码的安全性和可维护性。 4. **继承与多态**:继承允许一个类(子类)从另一个类(父类)继承...
"COREJAVA学习代码"这个主题旨在帮助开发者深入理解和掌握Java的基本语法、类库以及编程实践。下面将详细阐述一些核心Java的学习知识点,这些知识点通常会在课堂讲解和教师布置的作业中出现。 1. **基础语法**:...
这只是Core Java学习文档的冰山一角,后续章节还会深入到类和对象、异常处理、输入输出、集合框架、多线程、网络编程等方面。掌握Core Java是成为熟练Java程序员的必经之路,它能帮助你构建坚实的基础,为更高级的...
通过学习《Core Java》,读者不仅可以掌握Java编程的基础,还能了解并应用许多高级特性,提升自己的编程技能。无论你是准备踏入Java开发领域的新人,还是希望提升现有技能的开发者,这本教材都将为你提供宝贵的知识...
Java作为世界上最受欢迎的编程语言之一,其核心库——Core Java,一直是开发者学习和研究的重要对象。本资料集合了Core Java 8的源码,旨在帮助开发者深入理解Java语言的基础和高级特性,以及其背后的实现原理。 一...
《CoreJava CoreJava CoreJava 基础学习》 在Java编程领域,"CoreJava"通常指的是Java语言的核心部分,不涉及高级特性如Java EE(企业版)或Android开发。这个概念涵盖了Java语言的基础语法、类库以及面向对象编程...
此外,还要了解封装、继承和多态等面向对象的三大特性。 3. **数组与集合**: 数组是存储同类型数据的基本结构,而集合框架(如ArrayList、LinkedList、HashSet、HashMap等)提供了更灵活的数据存储方式。学习如何...
《CoreJava上下册》是Java编程领域中备受推崇的入门教程,主要...无论你是Java新手还是希望巩固基础的开发者,《CoreJava上下册》都是不可或缺的学习资源。通过系统学习,你将能够独立编写出高效、健壮的Java应用程序。