------- android培训、java培训、期待与您交流! ----------
1.面向对象
类
class
-> 自定义一个类.
如何定义类.
class 类名{
成员变量(属性)
成员方法(行为)
}
类是模板,有了类可以根据类创建对象.
对象
堆内存中的一块实体空间.
存储了对象的属性.
new
-> 创建对象.
通过new 关键字创建对象. 在堆内存开辟了空间.存储了对象的属性.
类类型 对象名=new 类名();
虽然是通过new 操作符创建的对象, new 操作符返回一个结果,该结果是对象的引用(地址值),非对象本身.
对象的使用
-> 如何使用对象.
可以通过对象名. 的形式操作对象.
1. 对象名.属性名=值;
给对象的属性赋值.
2. 对象名.属性名
取出对象的属性
3. 对象名.成员方法
执行对象的特有的行为.
匿名对象
-> 存在的意义.
简化书写的方式.
1. 调用方法
如果调用成员方法时, 只需要使用一次,可以使用匿名对象.
new 类名().成员方法(); 虽然使用new 操作符创建了一个对象,并执行了该对象的方法,但是只要方法执行完毕该对象
立即变为了垃圾(来及回收是不定时回收的).
2. 作为方法的实际参数传递的.
public Car repairCar(Car car){
}
Car c=new Car();
repairCar(c);
***************
封装
解决的问题,程序出现了问题. 需要使用该种方式解决?
-> 封装的实现的方式.
成员变量私有,公有的get set 方法 这就是封装的一种实现方式...
-> 存在的意义.
如果使用封装, 在其他类中,可以直接通过对象名.属性名的方式直接访问对象的属性. 可以属性赋值.
出现非法的数据,对象保存了非法的数据,程序不够安全和健壮了...
如何有效的过滤非法数据.
1. 类的成员变量私有
其他类中, 无法通过对象名.属性名的方式直接访问该对象的属性类.
2. 该类提供公有的get 和set 方法.
可以在方法中加入逻辑判断,过滤非法的数据.
(只不过偷懒了... )
注意: private 实现方式仅仅是封装的一种体现...
方法(函数) 也是封装的一种体现...
一段独立功能的程序. 可以解决特定的问题,实现特定的目标...
Arrays.sort(数组);
dry 电脑...
主板, cpu ,内存,硬盘,电源... -> 跑了...
风险高-> 避免安全隐患. 将电脑封装到主机箱中...
不能封死,对外提供操作... 开机按钮,网卡口...
对外提供开机按钮,usb ,网卡开口...
-> 封装的好处:
隐藏了类的具体的实现(侧重隐私的).
成员变量私有的话,对外(其他类)隐藏改成员变量...
如果不提供get 和set 方法的话,在其他类中确实无法访问了...
提高了对象的数据(属性)的安全性
在set方法中,过滤了非法数据.
提高了程序的可维护性安全性.
提高了可维护性?
成员变量私有->无法直接通过对象. 属性的形式访问对象的属性了.
但是可以通过get 和set 方法访问...
可以根据实际需求决定是否要提供get 或者set .
如果需要对外提供属性->添加get 方法.
如果需要对象提供修改属性->添加set 方法...
员工:
工号
get
no set
工资:
no get
set
构造函数
作用
初始化对象.
使用
通过创建对象时, new 操作符后 添加具体的实际参数,jvm 根据实际参数匹配对应的构造函数...
构造函数在创建对象时,有jvm 根据实际的参数调用的,用于初始化对象的属性的.
一个类中可以存在多个构造函数,是以重载的形式存在.
重载: 函数名相同, 参数列表不同的.
构造函数的特点:
1. 函数名和类名相同
2.没有返回值
3. 没有返回值类型, 和void 不同.
4. 自定义类,如果没有提供构造函数,编译器提供一个无参数构造(默认),如果自定义了构造函数,默认的无参数构造就没有了
构造代码块
在一个类中直接以一对花括号存在{}
作用: 初始化对象
构造函数的不同:
只要创建对象就会执行,并且优先于构造函数执行. 在创建对象的整个周期内只执行一次.
构造函数,jvm 根据具体的实际参数确定对应的构造函数.
this
含义:
对象的引用.
使用场景
可以用在成员方法中
可以用在构造函数中.
作用
1.用在成员方法中,可以区分成员变量和局部变量同名的问题.
set 方法.
this.成员变量=局部变量. 局部变量的值赋值给了成员变量(属性)
注意:成员方法的依赖于对象. 需要通过对象名.成员方法的形式调用...
哪个对象调用该方法,方法内部的this 就是那个对象了.
2. 用在构造函数的第一行. 调用本类的其他构造函数.
this() -> 调用无参数构造.
this("jack",28); 调用有参数构造.参数一为String,参数二位int
注意的如果在一个构造函数中,调用本类的另一个构造函数,这个语句需要在第一行.
因为java 希望初始化的动作优先执行...
static
静态
修饰成员变量
使用场景,作用是什么
类变量, 不需要创建对象,可以直接通过类名来访问了.
静态变量随着类的加载初始化,存在于方法区(类的字节码文件.class 文件也存储在方法区)由于类只加载一次,静态变量只有1份.
如果对象和对象之间出现了共享的数据,可以使用静态变量.
实际开发:
public static final 数据类型 常量名=常量值;
静态和常量和公共一起出现.
公共的->访问权限最大.都可以直接通过类名访问.
static -> 静态的,只有1个.
final ->最终的,不能被改变的,常量
public static final dobule PI=3.14
Math.PI .
修饰成员方法
使用场景,作用是什么.
如果设计的方法,不想创建对象,就像调用的话,直接将方法设计为静态的...
什么时候考虑使用这样的方法呢?
设计工具类时, 例如Arrays Collections Maths 这些工具类...
为了方便的让大家使用导工具类中的方法,直接将所有方法设置为静态的,有了避免多余的创建对象,将工具类的构造函数私有化.
只能通过 类名.方法名访问了工具类中的方法了...
静态代码块
随着类的加载而执行,并只执行一次.
想要执行第二次或者第三次,重新启动程序... 所以在整个正序的运行周期内,只执行一次.
适合初始化类(程序)
例如: 静态代码块中连接库...
图书管理系统初始化书库...
*****************
类和类之间的关系
继承
extends
解决了什么问题,好处的什么.
如果类和类之间符合is a 的关系...
ia a
xxx 是 yyy 的一种(一类)
可以使用继承建立类和类之间的关系.
如果建立了继承关系,可以提高代码的复用性,减少重复代码...
1.描述类和类之间的关系,并减少了重复代码,提高代码的复用性.
注意:
不要为了减少重复代码就使用继承,要符合is a 关系.
super
使用场景
子类中.
1. 访问父类属性.
2. 访问父类的成员方法.
3. 访问父类的构造函数.
在子类的构造函数第一行有默认的语句super() ,创建子类对象时,先默认的调用父类的无参数构造.
当子类的构造函数中,自定义的调用类父类的构造函数时,默认的super() 就没有了...
注意: 如果在构造函数中,调用父类的构造函数是,不同同时出现this,调用本类的构造函数.
都是初始化的动作,都需要在第一行.
class fu{
private String name;
fu(){
}
fu(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
class zi extends fu{
zi(){
}
zi(String name){
super(name);
}
}
class sun extends zi{
sun(){
}
sun(String name){
super(name);
}
}
重写
override 覆盖.
存在的意义,java设计了重写的意义.
使用前提:
子父类中(实现类实现接口的实现类中),子类继承类父类的方法,如果父类的方法无法满足子类的需求,子类可以重写父类的方法. 增强子类的方法.
核心:
子类是比父类强的.
使用场景:
子类继承类父类,父类是抽象类,存在抽象方法.
子类如果调用该方法,必须重写...
实现类实现类接口,接口中有方法.
实现类实现类该接口,如果想要调用该方法,必须重写...
注意:
子类继承父类, 实现类实现接口中.
函数名要形同,参数类表一致,修饰符(子类>=父类),返回值类型(子类方法返回值类型<=父类方法的返回值类型)
Object 在java 是一个顶层的父类 比较大的.
Object 子类 就是小的.
class Animal{}
class Dog extends Animal{}
class Father{
Animal getAnimal(){
return new Animal();
}
}
class Son extends Father{
public Dog getAnimal(){
return new Dog();
}
}
Dog < Animal
重写只存在于非静态成员方法,和成员变量,静态方法没有关系的...
final
使用场景
1.修饰成员变量
普通的变量,可以取值和赋值. 如果不想修改变量的值. 可以将变量设置为常量.final修饰.
2.修饰成员方法
普通的成员方法(非私有的),子类继承并重写该方法, 如果父类不希望子类重写,可以将方法设置final.
3.修饰类
如果该类不希望有子类...
4.修饰形参.
避免形参随意的修改...
抽象类
abstract
抽象方法:
如果一个类中的成员方法,方法体不明确,无法确定,可以将方法设计为抽象方法,交给子类来实现(重写)
修饰符 abstract 返回值类型 函数名(参数列表);-> 没有方法体的方法,并使用abstract 声明了的就是抽象方法了...
抽象类:
如果一个类中存在一个以上的抽象方法,该类必须声明为抽象类...
修饰符 abstract class 类名{
}
使用场景
实际开发中,将符合is a 关系的类, 组成一个体系, 有所谓的顶层父类和底层的实现类.
将顶层的父类设计为抽象类,顶层的父类的方法的方法体是不确定(明确)抽象的...
注意事项
抽象类不能创建对象.
抽象类中存在抽象方法,功能是不完整,如果能够创建抽象类对象的,调用到抽象方法后,是没有任何意义.
抽象类可以有成员变量可以有构造函数,可以有非抽象方法
都是给子类使用的. 体现了继承的思想,提高代码的复用性...
抽象类当然可以没有抽象方法
目的仅仅是为了禁止创建对象.->如果是抽象类,即使使用反射技术,也无法创建出该类对象...
使用事项:
子类继承抽象类.
1. 子类要么重写父类中的所有的抽象方法,
子类继承的父类,如果父类还继承的有父类, 子类就需要重写全部的继承下的抽象方法...
2. 子类要么也声明为抽象类.
不需要重写抽象方法了,抽象类允许存在抽象方法.
接口
interface implements
语法:
interface 接口名{
public static final 属性;
public abstract 返回值类型 函数名();
}
使用事项:
1.类实现接口要么重写该接口中的所有方法...
2.类实现接口要么声明为抽象类.
3. 一个类可以同时实现多个接口.
3. 接口和接口之间是继承关系,一个接口可以继承多个接口.
思考题:
设计一个类.
表示古代的皇帝,
皇帝比较特殊,唯一的...
如果描述了皇帝类,该类在整个程序中只能创建一个对象. 只能有1个...
创建对象:
如何保证对象的唯一性
单例设计模式.
设计模式:
解决一类特定的问题时,发明了特定的代码适合解决该问题...
单例:
1. 构造函数私有.
禁止在其他类中创建该类对象.
2. 本类提供一个本类对象.
在成员变量的位置设置一个本类对象的成员变量,并初始化(创建本类对象).
3. 提供静态方法获取到这个本类对象.
*/
public class Demo1{
public static void main(String[] args){
for(int i=0;i<10;i++){
System.out.println(Emperor.getEmperor());
}
}
}
// 单例(单态)-> 保证该类对象的唯一性...
class Emperor{
// 本类类型的成员变量.
private static final Emperor em=new Emperor();
// 构造函数私有
private Emperor(){
}
// 公共静态方法获取到本类对象.
public static Emperor getEmperor(){
return em;
}
}
相关推荐
《黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02》 本文将深入探讨2016年黑马程序员发布的Hibernate框架开发课程的第二天内容。Hibernate,一个强大的Java持久化框架,简化了数据库操作,为开发者提供了...
《Hibernate框架深度解析——基于黑马程序员2016版教学资料》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供数据持久化的对象模型,使得开发者可以...
黑马程序员_毕向东_Java基础视频教程第05天-01-面向对象(概述).avi
3. **面向对象编程**:深入讲解Java的核心特性——面向对象编程,包括类的定义、对象的创建与使用、封装、继承和多态等概念。 4. **数组和集合框架**:介绍数组的使用,以及ArrayList、LinkedList、HashSet、...
总结来说,《黑马程序员_Java基础辅导班教程课件[第01期]第15天》的内容可能涉及了Java语言的核心概念,包括面向对象编程、控制结构、异常处理、文件I/O、集合框架以及内存管理等。通过深入学习和实践这些知识点,...
【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...
在"黑马程序员_Java基础辅导班教程课件[第01期]第13天"中,我们聚焦于Java编程语言的基础知识,这是一门面向初学者的课程,旨在帮助学员快速掌握Java开发的基本技能。第13天的课程通常会涵盖上一天(第12天)所学...
学习Java的面向对象编程概念,如类、对象、继承、多态等,以及异常处理和集合框架,是Android开发的前提。另外,Kotlin作为现代的Android开发语言,也被越来越多的开发者采用,其简洁的语法和安全特性使得编写代码...
这个名为“黑马程序员_毕向东_Java基础源码.rar”的压缩包文件,包含了丰富的Java基础源代码实例,对于初学者来说,是深入了解Java编程的良好资源。 一、Java基本语法 Java语言以其严格的类型检查和面向对象特性...
"黑马程序员_Java基础辅导班教程课件[第01期]第11天"是一个专门为初学者设计的培训课程,旨在帮助学员深入理解和掌握Java的核心概念。这个课程可能是通过视频形式进行的,结合了理论讲解和实际操作,以便让学习者能...
【Java基础辅导班教程】- 黑马程序员 在编程世界中,Java是一种广泛应用的面向对象的编程语言,尤其在企业级应用开发中占据主导地位。"黑马程序员"作为知名的IT培训机构,提供了丰富的Java基础辅导课程,旨在帮助...
【标题】"黑马程序员_使用oc写了个命令行21点小游戏" 描述了一款使用Objective-C编程语言开发的命令行版21点游戏。在iOS和Mac OS X开发中,Objective-C是一种广泛使用的编程语言,它基于C语言并加入了Smalltalk的...
1. **面向对象编程(OOP)**:Java是一门面向对象的语言,第8天的课程可能会重点讲解OOP的四大特性——封装、继承、多态和抽象。封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式;继承允许一个类(子类)...
4. HQL与 Criteria查询:Hibernate提供了不同于SQL的查询语言HQL(Hibernate Query Language),使得查询更加面向对象。同时,Criteria API提供了一种动态构建查询的方式,无需书写字符串,更易避免SQL注入。 5. ...
根据提供的文件信息,我们可以推断出这是一套由知名IT教育机构“黑马程序员”出品、由讲师毕向东主讲的Java基础教学视频。由于实际视频内容无法直接获取,本篇将依据标题、描述以及部分标签内容,综合分析并展开相关...
在"黑马程序员_Java基础辅导班教程课件[第01期]第5天"中,我们主要聚焦于Java编程语言的基础知识。这是一份专为初学者设计的教学资源,旨在帮助学员扎实地掌握Java编程的基本概念和技能。第5天的课程可能涵盖了变量...
在"黑马程序员_Java基础辅导班教程课件[第01期]第10天"中,我们聚焦于Java编程语言的基础知识,这是一门面向初学者的课程,旨在帮助学员快速掌握Java的核心概念。通过这个阶段的学习,学员将能够理解并运用Java的...
在"黑马程序员_Java基础辅导班教程课件[第01期]第4天"中,我们可以推测这是针对初学者的Java编程课程,旨在帮助学员掌握Java的基础知识。 在课程的第4天,可能讲解了以下核心概念: 1. **类(Class)**:`Demo.class...
在"黑马程序员_Java基础辅导班教程课件[第01期]第6天"中,我们主要聚焦于Java编程语言的基础知识,这通常包括了变量、数据类型、运算符、流程控制语句等核心概念。此课程面向初学者,旨在为学员构建坚实的Java编程...
C++黑马程序员学习资料,附赠《InterviewGuide第四版By阿秀》、《LeetCode刷题手册》、《背包问题九讲》、《算法图解》pdf版本,三个基础课程文档手册及三个实验项目,由简到繁分别为《通讯录管理系统》、《职工管理...