学习心得一

类与对象

类:大多数面向对象的程序设计语言中用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()); 
} 
  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值