------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1.面向对象的核心思想
Java中只有值传递,基本类型传递的是实际的数值,引用数据类型传递的是地址值。
基本类型:形式参数的改变不会影响实际参数.
引用类型:形式参数的改变会直接影响实际参数,因为引用数据类型传递的是地址值.(String类型除外)
(2)理解面向过程和面向对象
面向过程:是以函数为基础,强调的是过程。(强调的是这个方法可以实现什么功能)
面向对象:是以对象为基础的,它强调的是这个对象可以完成什么功能
(3)面向对象的思想特点
A:更符合人们的思考习惯的思想(能懒就懒)
B:把复杂的事情简单化
C:让程序员从执行者变为了指挥者
(4)面试:跟我谈谈什么是面向对象
A 面向对象是基于面向过程的
B 告诉他什么是面向过程什么是面向对象
C 在说面向对象的思想特点
D 举例说明(要求每人想一个)
2、类与对象的关系概述
(1)开发的过程:
就是不断的创建对象,指挥对象去做事情(对象调用方法)
(2)类与对象
类:属性和行为的集合,它是一个抽象的概念
对象:就是类的具体实现,体现.
成员变量:其实就是属性
成员方法:其实就是行为
(3)定义一个类的步骤
A、分析这个实物有什么属性及行为
B、把这个事物的属性定义为成员变量(把变量定义在类中方法外)
C、把这个实物的行为定义为成员方法(把之前函数中的static去掉)
注意:
只有能用于描述这个类属性的才可以定义为成员变量,其他情况全部定义为局部变量
(4)成员变量与局部变量的区别
成员变量:
A定义在类中方法外
B是有默认初始化值的(String null, int 0)
C储存在堆内存中(因为它是随着对象的存在而存在)
局部变量:
A 定义在方法中,或形式参数位置
B 是没有默认初始化值的(必须先赋值再使用)
C 存储在栈内存中的(它是依托于方法而存在的,方法调用完毕就消失。)
(5)匿名对象
使用情况:
A 当对象之使用一次时。
B 可以当实际参数使用。
案例:
class Student
{
public void show()
{
System.out.println("student -- show");
}
}
class Test
{
//引用类型作为形式参数
public static void print(Student s)
{
s.show();
}
public void print(int a)
{
System.out.println(a);
}
}
class NiMingTest
{
public static void main(String[] args)
{
//如何使用show()方法呢?
Student s = new Student();
//匿名对象的使用
Test.print(new Student());
Test t = new Test();
}
}
(1) 定义
隐藏对象的属性和细节,仅对外提供公共访问方式。(换句话说就是将属性私有化,并提供共有的方法访问)
注意:
对外提供访问方式是因为可以在访问方式中加入逻辑判断的语句。提高代码的健壮性。
(2)好处:
A、将变化隔离。
B、便于使用
C、提高重用性
D、提高安全性
(3) private关键字
A. 他是一个访问权限修饰符。
B.可用于修饰成员内容,包括成员变量和成员方法
C.被private修饰的内容只能在本类中使用
注意:
private仅仅是封装的一种体现,因为类,函数等其实也是一个封装的体现
C.set方法和get方法的名字可以随便起,这样起名只不过是形成的一个默认的规则
(2) 作用
给对象进行属性初始化(给类中的成员初始化)
(3) 注意事项
C、构造方法的重载体现在参数列表不同
D、构造方法的重载与方法的重载没有关系,即使构造方法名和普通方法名一样,他们也不存在重载关系。
注意:
Set方法存在就是为了个成员变量赋值。
构造方法主要目的是初始化对象(捎带赋值),只能赋值一次
(5)构造函数与一般函数的区别
构造方法是在对象一建立就运行,给对象初始化,且只运行一次。
一般方法是对象调用才执行,给对象添加功能,可以调用多次。
案例:
class Person
{
private String name;
private int age;
//构造方法
public Person()
{
//System.out.println("无参构造方法");
}
public Person(String n)
{
name = n;
}
/*
这不是构造方法
public void Person()
{
System.out.println("haha");
}
*/
}
5、this关键字
(1)概念
(2) 应用场景
用于解决局部变量隐藏成员变量的问题
简单点说:通过this关键字可以直接调用成员变量
Public boolean compare(Person p)
{
Return this.age == p.age;
}
(3)使用案例:
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
}
6、代码块(用的很少,主要应对面试)
(1)概述
由{}扩起来的代码称之为代码块,类或者方法也可认为是代码块,但是一般不这么说,我们平时所说的代码块指的是孤零零的{}
(2)代码块作用
A、局部代码块作用
让变量尽可能早的从内存中消失,提高内存利用率
B、构造代码块作用是
把所有构造方法中的共同的内容定义在构造代码块中,提高代码复用性,代码块先于构造方法执行,但是一般不用
7、static关键字
(1)概述
A static可以修饰成员变量和成员方法
B 被static修饰的成员可以被该类下所有的对象共享
(2)什么时候用静态
A.如果该属性是被该类下所有的对象所共享时就用static修饰
B.如果方法内部只访问静态数据时,那么该方法可以定义为静态的。
注意:
类中所有方法都静态后,可以直接调用,但是该类还是可以被其他程序建立对象,为了更为严谨,可以通过将构造方法私有化,强制让该类不能建立对象。
(3)特点
C、可以直接通过类名调用
D、被该类下所有对象共享
8、继承
(1)什么是继承
A、多个类中存在相同属性和行为时,将这些内容抽取到单个类中,那么多个类无需在定义属性和行为,只需要继承即可
B、多个类称为 子类或派生类, 单个类称为父类或者超类
C、通过extends关键字让他们产生关系
(2)继承的好处及特点
9、this 和super比较
(1)概念上的区别
super代表的是父类内存空间标识
this代表的是本类对象的引用
(3)调用方式
A、super:
调用构造方法:super()
调用成员变量:super.变量名
调用成员方法:super.方法名()
B、this:
调用构造方法:this()
调用成员变量:this.变量名
调用成员方法:this.方法名()
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------