面向对象简单总结

面向对象总结

1.初识对象

   1.1(熟悉面向对象

          表格法

          引入对象及类)

想要更具体的了解面对对象,明白什么是变量,我们在学习中引入一个表格的方法,来映射给对象,数据就是由一个个表格组成的,表格的表头就好像一个类,。一个模板,通过这个模板,给i与信息的赋值,就得到了我们的对象,在Java中一切都是对象。

   1.2面对过程&面对对象

          (进化史

          区别

          面向对象设计和分析思维

          写诗例子)

在java之前有c语言,而c语言就是典型的面对过程,将一个程序的运行拆分成一个个小程序,一个个的去完成,对于java,这是一个面对对象的语言,是一个设计程序的软件,并不真正的实现它的现实功能。面向过程适合简单、不需要协作的事务,重点关注如何执行。面对对象更加注重设计者思维。好比一首诗,就是一个面对对象的过程,要想写好诗,就要很好的把景物融入诗中。

   1.3类和对象

          (定义

          属性

          方法)

类可以看成一类对象的模板,对象可以看成该类的一个具体实例,类是一个比较啊抽象的东西,比如我们说学生,那现实中的学生有哪些特征,这些特征就是一个类应该有的属性,也就是成员变量而方法就是类的行为特征。那我们定义一个学生类就要有类的声明,属性的初始化,以及方法的调用。

   1.4构造方法

          (定义方法

          四大要点

                 没有定义构造器,则编译器会自动定义一个无参的构造函数

                 方法名必须和类名一致

                 不能定义返回值类型不能在构造器里使用return返回某个值

          重载)

为了对象的初始化,我们需要创建构造器,通过new关键字调用构造器,有的时候要重载构造器,修改构造器中的参数,进行重载方法。

在这里插入图片描述

2.对象中机制

   2.1对象内存分析

          (建立虚拟内存模型

          程序运行的内存分析

          参数)

在Java中,敲代码是基础,我们还拥有读懂程序究竟是如何运行的,借助虚拟内存模型进行程序解读。

   2.2垃圾回收机制·

          (原理及算法

                 引用计算

                 根搜索)

在c语言中,需要人工删除我们不需要的程序,在Java中有垃圾处理机制,自动处理那些没有对象引用的栈帧或空间。处理掉我们多余的东西,节省内存空间。处理信息有两种方式引用计数和根搜索。创建大量无用对象;静态集合类的使用;监听器的使用等的操作都会导致信息泄露的操作。

3.编程三大特征

   3.1继承

          (概念&实现

          接口运算符

          方法重写

          继承&组合)

继承有两功能:代码扩展,方便建模.可以让我们更好的对对象的建模,通过extends命令,可以进行子类和父类的继承,一个父类的继承是单继承,只有接口可以多继承。子类可以继承父类的属性和方法,除构父类构造方法不能继承,在进行实现时,要通过super关键字命令进行调用,并且super必须位于子类构造方法第一句。必要时,为了实现子类的方法还有进行父类方法的重写。在进行类型判断时,可以借助interfaceof来分别谁是谁都对象。

1.public
class TestA {

public static void main(String[] args) {

    Begain b = new End(2);

}

}

class Begain {

  int a;

  public Begain(int a) {

      System.out.println("构造器");

  }

}

class End extends Begain {

        End(int i) {//子类调用父类构造方法,先建立一个子类构造方法,在进行调用

            super(2);

        }

    }

2.public class Test{

     public static void main(String[ ]

args) {

              Student

s = new Student();

              System.out.println((s instanceof Student);//s是Student类的对象

     }

}

   3.2封装

          (作用&含义

          访问控制符

          javabean封装)

将更多的内部操作存放起来,留给人操作的东西越来越少,封装就是要把我们的代码装起来,只留下调用的方法。Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。访问控制符一共四类,分别是private,default,protected,public .protected运算符除其他包的类都可以访问。在javabean中属性控制符一般是private,使用set/get方法进行封装。

   3.3多态

          (概念&实现

          对象转型)

多态就是一个方法,多个实现,比如中西吃饭方式就不一样了,在进行多态时,定义一个方法,进行子类继承,方法的重写,最后在main方法中父类地址指向子类对象,利用父类的引用,调用子类方法就形成多态。多态是方法的多态,与属性无关。

对象只能调用它编译的方法,不能调用它的运行方法,所以有时候需要进行向下转型(Animal
a=new dog();向上转型)

public class Dt {//有了多态,只需要让增加的这个类继承Animals类就可以了。

static void Animalcode(Animals a){//建立一个方法把父类的引用作为参数,之后调用子类方法

    a.speed();

    a.eat();

}

public static void main(String[] args) {

/* wolf w=new wolf();

 Animals a=w;*/

Animals a=new wolf();

Animalcode(a);//调用Animalcode(输入参数变量)

Animals a1=new tiger();

Animalcode(a1);



}

}

class Animals{//父类的继承,子类的重写方法

public void speed(){

    System.out.println("每小时最快速度:");

}

Animals(){

    System.out.println("Animals");

}



public void eat() {

    System.out.println("自然法则");

}

}

class wolf extends Animals{

public void speed()

{;//调用父类方法在子类方法中,不能在子类方法中调用父类构造器,要在子类构造器中调用父类构造器

    System.out.println("野狼每小时速度:70km");

}

public void eat(){

    System.out.println("会吃掉?");

}

}

class tiger extends Animals{

tiger(){

    super();

}

public void speep(){

    System.out.println("每小时120km");

}

public void eat(){

    System.out.println("老虎吃狼");

}

}

4关键字

   this关键字,表示当前对象,用构造器创造一个对象首写分配空间,初始化属性为0;进行属性赋值初始化,运行构造器,最后把地址付给相关变量。This就是创建后的对象的地址。在进行本类构造方法的调用时,位于构造方法的第一句。即使你不写this();,系统会自动帮你写上。

public class This {

public static void main(String[] args) {

    his t = new his(25, "小芸对象");

    System.out.println("小芸对象的对象" + t);

    t.user();

}

}

class his {

    int age;

    String name;

    public his(int age, String name) {

        System.out.println("正在给已经建好的属性进行初始化" + this);

        this.age = age;//前一个age为成员变量,后一个为局部参数

        this.name = name;//前一个name为成员变量,后一个是构造方法的局部参数

    }

    void user() {

        System.out.println(name + "正在输入小芸的对象");

    }

}







   static关键字,声明的成员属于静态属性,是类变量,被所有的对象共享,并且静态方法中不能访问属性。

   Super用与继承的子类方法中,用于调用父类普通方法,构造方法,必须位于方法的第一行。系统会默认Super();调用非空构造器需要输入参数super(参数);。

   Final

为final修饰的方法,不能再重写,但可以重载。

为final修饰的类不能被继承。

为final修饰的变量,不能在被重新赋值。

5面对对象中的类

   5.1Object类

          (tostring方法

          ==&equals方法

          ==:是不是同一个对象

          Equals:逻辑上相等)

public class TestStringAgain {

public static void main(String[] args) {

    String s1=" sdfghjkl ";

    String s3="fgh";

    String s2=new String("sdfghjkl");

    System.out.println(s1==s2);

    System.out.println(s1.equals(s2));

运行结果如下:

false

true

   5.2抽象类

          抽象方法:只有方法声明,没有方法体,由abstract修饰。

   接口:接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。

抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。

abstract class Abstract1 {//抽象父类(可以有类的属性,方法,但一定要有构造器)

private int name;//私有属性

abstract void study();//抽象方法

abstract void test();//抽象方法

public int getName() {//封装

    return name;

}

public void setName(int name) {

    this.name = name;

}

}

class student extends Abstract1{//子类继承父类,并进行重写

 @Override

 void study() {

     System.out.println("好好学习天天向上");

 }

 @Override

 void test() {

     System.out.println("争取拿100");

 }

}

public class Abstract{

 public static void main(String[] args) {

     Abstract1 a = new student();//父类引用指向子类对象

     a.getName();

     a.study();

     a.test();

 }

}

5.3面向接口编程

静态方法与默认方法

我们可以在默认方法中调用静态方法,却不能再静态方法中调用默认方法,因为,静态方法属于类方法,不能调用非静态方法。

public class JingDong {

public static void main(String[] args) {

A a=new B();//父类引用指向子类对象

a.Mathod2();//此处a为对象,不能调用静态方法

B.Mathod1();//调用静态方法可用类名直接调用

}

}

interface A{//面向接口的编译过程

static void Mathod1(){

    System.out.println("第一个方法,静态方法");

}

default void Mathod2(){

    Mathod1();

    System.out.println("默认方法可以调用静态方法");

    System.out.println("第二个方法,默认方法");

}

}

class B implements A{//接口的实现,无法实现默认方法。

static void Mathod1(){

    System.out.println("通过接口实现静态方法");

}

}

接口的多继承

interface a{//接口类

void A();//抽象方法只有声明,无方法体

}

interface b{

void B();//抽象方法只有声明,没有方法体,方法体由子类接口实现

}

interface c extends a,b{

void C();

}

class Test implements c{//实现接口(implement),通过子类接口实现父类接口的方法

public void A(){

}

public void B(){

}

public void C()

}

}

5.4String类

          基础用法&常用方法

          常量池

          字符串相等的判断

下面是string类的常用使用方法。

public class TsetString {

public static void main(String[] args) {

   //判断字符串是否相等

    String s1="asdfghj";

    String s2 =new String("asdfghj");

    String s3="fg";

    System.out.println(s1==s2);//判断两个对象是不是同一个对象

    System.out.println(s1.equals(s2));//只要字符一致,就是一个对象(符合逻辑)

   ///

    System.out.println(s1.length());//打印字符串长度

    System.out.println(s1.charAt(5));//串打印字符的第n个字符是什么

    System.out.println(s1.indexOf(s3));//从左起,打印s3的第一个字符在s1中的第几个

    System.out.println(s1.lastIndexOf(s3));//从右开始,打印s3在s1字符串中的位置

    String s4="zxcvbnm".replace("cv","wer");//代替s4字符串中部分字符,代替个数大于一个

    System.out.println(s4);

    String s5="qwertyuiop".replace("w","d");//代替s5字符串的某一个字符

    System.out.println(s5);

    System.out.println("asdfghjkl".startsWith("ddgh"));//检查字符串是不是以某几个字符串开始

    System.out.println("asdfghjkl".startsWith("asdf"));//检查字符串是不是以某个字符串结束

    System.out.println("asdfghjkl".endsWith("jkl"));

    System.out.println(s5.substring(5,6));//截取字符串第4,5之间的字符

    System.out.println(s1.substring(6));//截取字符串某一个字符

    String s6="asdfgGHJ";

    System.out.println(s6.toUpperCase());//将字符串的小写字符转换成大写

    System.out.println(s6.toLowerCase());//将字符串的大写字符转成小写

    String s7=" c  d  ";

    System.out.println(s7.replace(" ",""));//利用replace代替字符串里的空格

    System.out.println(s7.trim());//删去字符串的起始及结尾的空格

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值