黑马程序员——面向对象

来源:互联网 发布:sqlserver时间取到点 编辑:程序博客网 时间:2024/05/14 06:22

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------


面线对象:


面向对象是相对面向过程而言


面向对象和面向过程都是一种思想


面向过程,强调的是功能行为,关注完成的过程


面向对象,将功能封装进对象,强调具备了功能的对象,不关注过程


面向对象都是基于面向过程的


面向对象特点:


是一种符合人们思考习惯的思想


可以将复杂的事情简单化


将程序员从执行者转换成了指挥者


完成需求时,先要找具有所需的功能的对象来用,如果该对象不存在,那么创建一个具有所需功能的对象


简化开发并提高了复用性


面向对象的特征:


封装(encapsulation)


继承(inheritance)


多态(polymorphism)


例举一个多态的代码:


class Demo
{
public static void main(String[] args) 
{
DoStudent ds = new DoStudent();
ds.dosome(new BaseStudent());
ds.dosome(new AdvStudent());
}
}
abstract class Student 
{
public abstract void study();
public void sleep(){
System.out.println("      躺着睡觉");
}
}


class DoStudent
{
public void dosome(Student stu)
{
stu.study();
stu.sleep();
}
}
class BaseStudent extends Student
{
public void study()
{
System.out.print("小学生");
}
public void sleep()
{
System.out.println("      坐着睡觉");
}
}
class AdvStudent extends Student
{
public void study()
{
System.out.print("adc学生");
}



}
类的定义:
具有相同的属性和功能的一类事物的抽象,比如,人有身高,体重等属性,有说话,运动等行为


java中用类class来描述事物也是这样

属性;对应类中的成员变量


行为;对应类中的成员函数


定义类其实就是定义类中的成员,成员变量定义在类中,成员方法直接定义在类中


类与对象的关系:


使用计算机语言就是不断的在描述现实生活中的事物(是相关的属性和行为的集合,是一个抽象的概念)


一个对象代表一个类的实例,需要创建一个类的一个或者是多个对象(是某种事物的具体存在,具体的表现方式)


成员变量和局部变量的区别:


成员变量;成员变量定义在类中,在整个类中都可以被访问到,成员变量有默认初始化值


成员变量随着对象的建立而建立,存在于对象所在的堆内存


局部变量;局部变量只定义在局部范围,局部变量存在栈内存中,作用的范围结束,变量的空间会自动释放

局部变量是没有默认初始化值的


匿名对象:


匿名对象是对象的简化形式,意思就是没有名字直接创建对象


匿名对象的两种使用情况;一,当对对象方法仅进行异常调用的时候,二,匿名对象可以作为实际参数进行传递
代码:
/*
写一个长方形类,里面有求周长和面积的功能。 然后在测试类中进行测试。

思考长与宽应该定义在成员变量位置还是局部变量位置
*/
class Test3
{
public static void main(String[] args) 
{
Rec rec = new Rec();
rec.height = 10;
rec.width = 20;


System.out.println(rec.zhouchang());
System.out.println(rec.mianji());


System.out.println(rec.zhouchang);
}


}


class Rec
{
int height;
int width;


int zhouchang = (height+width)*2;


//求周长的方法
public int zhouchang() {
return 2*(height + width);
}
//求面积的方法
public int mianji() {
return height*width;
}
}
封装(Encapsulation):


封装是指隐藏对象的属性和现实细节,仅对外提供公共访问方式


封装的好处:


1.将变化隔离


2.便于使用


3.提高重用性


4.提高安全性


封装原则;

1.将不需要对外提供的内容隐藏


2.把属性都隐藏,提供公共方法对其访问


private关键字(私有):


1.是一个权限修饰符


2.用于修饰成员(成员变量和成员函数)


3.被私有的成员只在本类中有效


常用之一,将成员变量私有化,对外提供对应的set,get方法,对其进行访问,提高了数据的安全性


private例举代码:


/*
this代表其所在函数所属对象的引用。


private也可以修饰成员方法。这种情况不够普遍,但是经常也会遇到。
*/
class Demo
{
public static void main(String[] args) 
{
Person p = new Person();
//p就是this  this代表p
p.setName("悟空");
p.setAge(66);
System.out.println(p.getName());
System.out.println(p.getAge());

p.sleep();
p.eat();


}
}


class Person
{
private String name;
private int age;
private boolean isLoveJava = true;
//================================================
public void setName(String name){
this.name = name;
}

public String getName(){
return this.name;
}


public void setAge(int age){
this.age = age;
}

public int getAge(){
return this.age;
}


public void setIsLoveJava(boolean isLoveJava){
this.isLoveJava = isLoveJava;
}

public boolean getIsLoveJava(){
return this.isLoveJava;
}


public void eat(){
//如果是热爱java的则可以吃饭,不热爱不可以
if(isLoveJava==true) {
System.out.println("因为"+name+"是热爱编程的,可以吃饭");
sleep();
}
else
System.out.println("因为"+name+"不是热爱编程的,不给饭吃");

}


private void sleep(){
System.out.println("睡了");
}
}
没有学不好,只有不努力~~——至自己!!!

0 0