java---面向对象

编程思想:需求–》建立思路–》目标代码

面向过程的思想:自顶向下 逐步求精
重点内容
1、编程思想:面向对象
SmallTalk
对象:一切客观存在的事物。
C面向过程—-C++ (面向过程和面向对象)
java 纯面向对象
属性:有什么
方法:能做什么
对象的属性有可能又是一个对象。
对象的方法的使用者又是一个对象。

任何对象都会有自己的方法,给别的对象用。

客观世界是由对象组成的
1)小对象组成大对象。
2)对象间彼此方法调用。

解决客观问题:面向对象的思想
1)把解决问题所需要的对象。
2)对象间如何配合,完成需求。

计算机需求 来源于 客观世界
解决计算机问题,同样可以采用面向对象的思想。

计算机中的对象:
JVM中连续的存储空间(数据)
代表生活中的对象,生活中的对象在计算机中的抽象

各司其职 对象应该保持简单性
弱耦合性 对象和对象之间的联系应该尽量弱化
可重用性
可扩展性

2、类:
1)对象共性的抽象
2)客观对象在人脑中的主观反应,类人对对象的认识。
3)类是对象的模版

如何编写一个类
属性:实例变量
1)有默认值 数值类型:0 布尔类型:false 对象类型:null
2)作用范围:至少是全类的内部
3)可以与局部变量发生命名冲突,冲突的时候局部优先

局部变量:先赋值后使用。定义在方法中,范围定义开始,到定义改变量的代码块

3、方法:
方法的声明:对象能做什么
修饰符 返回值类型 方法名(参数表) 抛出的异常
方法的实现:对象怎么做

重载(OverLoad)与覆盖(OverRide)
方法的重载:
1)参数的个数不同
2)参数的类型不同
3)参数类型的排序不同
形参名不同,不算重载

由编译器在程序编译的时候,根据实参的类型选择一个合适的方法调用。 编译时多态。
向上就近类型匹配原则 避免混淆情况。
方法重载决定取决于编译器。
上面是面试
作用:
让一个对象的同类方法,由于参数表的不同造成的差异,对用户屏蔽。

构造方法:
1)没有返回值类型
2)方法名必须和类名相同
3)不允许手工调用,在对象构造过程中自动调用一次

类写完是构造对象用的。
如果一个类没有定义任何构造方法,系统会默认添加一个公开的无参的构造方法。

构造方法在创建对象的时候用。
对象的创建过程:
1)分配空间 所有的实例变量被赋予默认值。
2)初始化属性 所有的实例变量被赋予初始值。
3)调用某一个构造方法 实例变量常常被第三次赋值。

构造方法经常是用来给属性赋值

4、创建对象
对象是数据,装在变量里。

Student s1=new Student("L",35,50);
Student s2=new Student();

难点
简单变量:存值 对象变量(引用) :存对象的地址 看变量类型
实例变量 局部变量 看位置
5、引用
对象变量(引用) :存对象的地址 ,引用指向了一个对象,来判断 。

package day1;
public class TestReference{
public static void main(String[] args){
/*int a=10;
int b=a;
b++;
System.out.println(a);
*/
/*Student s1=new Student();
Student s2=s1;
s2.age++;
System.out.println(s1.age);//21
*/
int m=10;
changeInt(m);
System.out.println(m);//10
}
static void changeInt(int a){
    a++;
}
}
class Student{
int age=20;

}

6、this 关键词
1)引用 当前对象 你对谁调方法,谁就是当前对象。
当实例变量和局部变量命名冲突的时候,用this.表示实例变量。
2)用在构造方法中 this(…)调用本类的其他构造方法。this.()必须在类的第一个语句上。

有参构造方法中去调用无参构造方法
构造方法不能手工调用
this()

package chp5;
public class TestThis{
public static void main(String[] args){
    /*Teacher t1=new Teacher();
    t1.name="Huxz";
    Teacher t2=new Teacher();   
    t2.name="liucy";
    t1.print();
    t2.print();
    */
    new Teacher("Hxz");
}
}
class Teacher{
String name;
public void print(){
    String name="Zhang3";
    System.out.println(this.name);
    System.out.println(name);
}
public Teacher(){
    System.out.println("Teacher()");

}
public Teacher(String name){
    this();
    this.name=name;
}
}
clss Worker{
    String name;
    int age;
    double salary;
    boolean gender;
    publin Worker(String name,int age,double salary){
        this.name=name;
        this.age=age;
        this.salary=salary;
}
   publin Worker(String name,int age,double salary,boolean gender){
        this(name,age,salary);
        this.gender=gender;
   }
}

**chp6 三大特性
封装 继承 多态
7、封装:**

对象的边界对对象的内部起到保护的作用:
数据隐藏
public 公开的 不受边界的约束
private 私有 只能在本类内部访问 无法突破边界
属性私有 提供公开的setXXX/getXXX用来访问属性
方法私有 只给自己调用
方法公开:声明公开 实现隐藏
实现的改变对架构的影响最小
数据左移一位与数据*2是一样的
a*2 a<<1

package chp6;
public class TestEncapsulation{
  public static void main(String[] args){
     CreditCard card=new CreditCard();
     System.out.println(card.getPassword());
     //card.password="1234";
     card.setPassword("1234");
     //card.password="1234";
     //card.password="654321";
     System.out.println(card.getPassword());
  }
}
class CreditCard{
  private String password="123456";
  public String getPassword(){
       return password;
  }
  public void setPassword(String password){
      if(password.length()!=6)return;
      this.password=password;
  }
}

8、继承
父类–子类 一般–特殊 父类:子类的共性抽象出来
动物 狗 猫
关键字 extends
创建子类对象要首先创建父类对象。
父类对象包含在子类对象当中。
所有的子类能够访问的父类属性和方法,即是子类从父类中继承的属性和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值