欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习心得一

程序员文章站 2022-05-28 21:48:56
...

类与对象

类:大多数面向对象的程序设计语言中用class来表示“我准备告诉你一种新类型的对象是什么”:

`class AtypeName{/*
    属性();
    方法();*/}`
如

果要使用类,需要用new来创建这种类型的对象:

ATypeName a= new ATypeName();

那么,什么是对象?

对象:在java中,所有的事物几乎都可以看为是对象,它是一个独立的个体,每个对象有自己独立的属性,依靠不同的属性来区分不同的对象。

存储到什么位置:
栈存储java的对象的属性,即对象引用,对象并不存放其中。
所有的java对象存储在堆中。
常量值通常存放在代码的内部,这样做是安全的,因为这样永远不会被改变。有时在嵌入系统中,常量本身会和其他部分隔开,所以在这种情况下,可以选择存放在ROM中。
如果数据完全存活于程序之外,可以采用非RAM存储方式,这种存储方式的技巧在于:把对象转化成可以存放在其他媒介上的事物,在需要时,可以恢复成常规的、基于RAM 的对象。

类是抽象的,更类似于一个模板。
对象是类的实例,类只有通过对象才可以使用。

封装、继承与多态

封装、继承、多态是面向对象的三大基本特性。
封装:
就是把抽象的数据和对数据的操作封装在一起,数据被保存在内部,一些对数据的操作和数据是私有的,不能被外界访问,只有通过授权的部分才能进行操作。
封装保护内部操作不被破坏。
继承:
继承可以解决代码复用问题,在我的理解里是为了让代码更加简洁。子类继承父类里的方法和属性,不需要重新定义属性和方法,直接用extends继承父类即可。
子类最多可继承一个父类。
学习心得一
此处的Circle Square Triangle继承了Shape当中的五个方法。
学习心得一
Triangle中添加了Delete方法,其他子类中没有。
方法覆盖:
子类重写父类的中的方法
要求子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。
子类方法不能缩小父类方法的访问权限。
学习心得一
使导出类和基类之间产生差异的方法是改变现有基类的方法的行为,这被称之为覆盖。

多态:
多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态使不同结构对象共享相同的接口。

public class A extends JFrame{ 
  
public static void main(String[] args) { 
// grap g1 = new grap(); 
Animal animal = new Cat(); 
animal.voice(); 
animal = new Dog(); 
animal.voice(); 
  
} 
  
} 
  
public class Animal { 
  
int age; 
String nameString; 
public int getAge() { 
return age; 
} 
public void setAge(int age) { 
this.age = age; 
} 
public String getNameString() { 
return nameString; 
} 
public void setNameString(String nameString) { 
this.nameString = nameString; 
} 
public void voice() { 
System.out.println("不知道怎么叫····"); 
} 
} 
//体现了方法的覆盖 
class Cat extends Animal 
{ 
public void voice() { 
System.out.println("喵喵"); 
} 
} 
class Dog extends Animal 
{ 
public void voice() { 
System.out.println("汪汪"); 
} 
} 
 
  
public class Animal { 
  
int age; 
String nameString; 
public int getAge() { 
return age; 
} 
public void setAge(int age) { 
this.age = age; 
} 
public String getNameString() { 
return nameString; 
} 
public void setNameString(String nameString) { 
this.nameString = nameString; 
} 
public void voice() { 
System.out.println("不知道怎么叫····"); 
} 
public void eat() { 
System.out.println("小虾小鱼"); 
} 
} 
//体现了方法的覆盖 
class Cat extends Animal 
{ 
public void voice() { 
System.out.println("喵喵"); 
} 
} 
class Dog extends Animal 
{ 
public void voice() { 
System.out.println("汪汪"); 
} 
} 
  
class Food 
{ 
public String name; 
public void showName() { 
} 
} 
class Fish extends Food 
{ 
public void showName() 
{ 
System.out.println("鱼···"); 
} 
} 
class Bone extends Food 
{ 
public void showName() 
{ 
System.out.println("骨头···"); 
} 
} 
  
class Master 
{ 
//给动物喂食物,使用多态,方法就可以用一个 
public void feed(Animal an,Food food) { 
an.eat(); 
food.showName(); 
} 
} 
  
package com.swing; 
import javax.swing.*; 
public class A extends JFrame{ 
  
public static void main(String[] args) { 
Master master = new Master(); 
master.feed(new Dog(),new Bone()); 
} 
  
}