`

java面向对象基础

阅读更多

类实例化方法——new、反序列化、反射、克隆。

事物认识过程:接触新事物——>有什么特征(属性)——>干什么用(功能,方法)——>怎么用(方法的具体实现) 

package Farmpackage;
*接口(interface)——Java只支持单继承,接口解决了多继承。
*接口是特殊的继承。

 *接口特点:没有构造器;public/abstract——接口; static/final——属性、方法都是抽象的;接口间多继承;类可以扩展另一个类,同时实现多个接口。
 *接口在需要使用的类进行实例化——implement
 *应用条件:广泛用于很多对象;

*功能——使上传型为多个类型(定义类型);防止客户端实例化,确保仅存一个该接口;

 interface AddGrassable {
 void addGrass(int num);
}
 

package Farmpackage;
*抽象类(abstract)——至少包含一个抽象方法(可有实例化方法);
public abstract class Product {
 *final——方法不能重写,类不能继承,属性不能更改。
 public static final int MAX_COUNT=40;//(最大产量)定义常量标准格式
 private String name;
 private boolean isRipe;
 private int forNum=0;
 public static final int MAX_FORNUM=4;
 protected int prodectCount=MAX_COUNT;
 public Product(String string){
 name=string;
 isRipe=false; 
 }
 *定义方法
 public void getProdects(){
  System.out.println(name+"收获了"+prodectCount+"kg农产品");
 }
public boolean isRipe(){
  if(forNum==MAX_FORNUM){
   return true;
  }else{
   forNum+=1;
   return false;
  } 
 }
 public abstract void steal(int num);
*抽象方法:只允许声明,不允许实现+不能用"final"修饰;
 * 实例化由子类完成 
 public abstract void addBug(int num);
 public String getName() {
  return name;
 }
}

package Farmpackage;
public class FarmTest {
 * 类变量和方法——static
 public static void main(String[] args) {
  Player t = new Player("张山");
  Product p = new Field("张山的牧场", "山羊");
  t.doBadThing(p);
  System.out
    .println("---------------------------------------------------");
  p = new Farm("张山的农田", "胡萝卜");
  t.doBadThing(p);
 }
}
 

 package Farmpackage;
*类(封装)——所代表对象的属性和行为。

*封装的表现:隐藏——访问修饰符、模块化{}

*setAccessable()用于设置封装性,更改后可使用一次
 * {}——该括号就是属性的极限,属性在哪个{}内定义就只有在那里面可见、可用。
 * 同名的属性就像在圆圈里往外走——看见的总是最近的变量。
public class Farm extends Product implements AddGrassable {
 private String vegetableName;
// 变量定义标准格式(private修饰);通过get(读)/set(写)方法来设置或获得属性;
 private int grassNum;// 属性(成员变量(全局变量=实例成员变量))全局变量会赋给默认值;
 * 构造方法——根据接收的值,给对象的属性赋值。特点——无法继承;方法名与类名相同;无返回类型;可有参;可重载
  * 构造器实现继承的方法——先初始化父类属性(子类构造方法第一条语句为super()),再初始化自己的属性。
  * 原理:子类构造方法存在否—子类构造方法第一句为super()否—父类有符合的构造方法吗?
 public Farm(String string, String vegetable) {
  super(string);
  vegetableName = vegetable;
 }
 public void addBug(int num)
{// 局部变量--方法体中定义的变量和方法中的参数
  System.out.println("你在" + this.getName() + "放了" + num + "只害虫");
  prodectCount -= num;
 }
 public void steal(int num) {
  System.out.println("你偷取了" + this.getName() + num + vegetableName);
  prodectCount -= num;
 }
 public void addGrass(int num) {
  prodectCount -= num;
  System.out.println("你往" + this.getName() + "放了" + num + "杂草");
 }
}

 package Farmpackage;
*继承(extends)——一切类都继承于Object类

*有血缘关系的,一脉相承的才叫继承,得到的是其的裸体;而接口是附属物,是其可有可无的装饰,没有接口他还是他。没有了继承他就不再是他——接口与继承的关系
 *

修饰符 

本类

同胞子类  异包子类  异包非子类 
 public  Y Y Y Y
 protected  Y Y Y  X 
 friendly Y
 private  Y  X 

 *方法的重写:纵向;一切(方法名、参数、返回类型)不变,只是改变实现;访问权限只能改小;
 *方法的重载:横向;方法名同,参数(个数、类型)不同
public class Field extends Product {
 private String animalName;
 public Field(String string, String animalName) {
  super(string);
  this.animalName = animalName;
 }
 public void addBug(int num) {
  System.out.println("你在" + this.getName() + "放了" + num + "只害虫");
  prodectCount -= num;
 }
*内部类——匿名内部类;
 * 方法的内部类——不能用访问修饰符修饰;不能为static;用作传给该方法的参;final修饰的该方法变量;引用方法的局部变量,
 * 匿名内部类——没有类名和构造函数;申明时就实例化;
 public void steal(int num) {
  System.out.println("你偷取了" + this.getName() + num + animalName);
  prodectCount -= num;
 }
}

 package Farmpackage;

public class Player {
 private String name;

 private int badthingNumber;

 public Player(String string) {
  name = string;
  badthingNumber = (int) (Math.random() * 10);
 }

 public void doBadThing(Product p) {
  while (!(p.isRipe())) {
   int num = (int) (Math.random() * 3);
   switch (num) {
   case 0:
    p.steal(badthingNumber);
    break;
   case 1:
    p.addBug(badthingNumber);
    break;
   case 2:

     * 多态——方法根据不同类型的参数执行出来的结果也不同。

   if (p instanceof AddGrassable) {
      * 上传型对象——接受父类参数的地方也可以接受子类参数
     AddGrassable impl = (AddGrassable) p;
     impl.addGrass(badthingNumber);
    } else {
     System.out.println
("牧场里不能放草");
    }
   }
  }
  System.out.println("农作物已成熟");
  p.getProdects();
 }
 public String getName() {
  return name;
 }
 public int getBadthingNumber() {
  return badthingNumber;
 }
}

 

分享到:
评论

相关推荐

    JAVA面向对象基础

    ### JAVA面向对象基础知识点详解 #### 一、面向对象编程语言的发展史 面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,其核心在于将现实世界中的对象及其属性和行为映射到软件系统中...

    java面向对象基础知识点.doc

    Java 面向对象基础知识点 Java 是一门面向对象的编程语言,面向对象编程(Object-Oriented Programming,OOP)是 Java 语言的核心。了解 Java 面向对象的基础知识是掌握 Java 语言的关键,本文将对 Java 面向对象的...

    java面向对象基础、高级pdf讲义

    Java面向对象基础与高级知识点详解 Java是一种广泛使用的面向对象编程语言,它的设计哲学是“一切皆对象”。本讲义将全面深入地介绍Java面向对象的基础概念和高级特性,帮助开发者从初学者到精通者逐步提升技能。 ...

    Java面向对象基础源代码教程

    在"Java面向对象基础源代码教程"中,我们将深入探讨这一主题。 首先,我们需要理解面向对象的三个主要原则:封装、继承和多态。封装是将数据和操作这些数据的方法捆绑在一起,形成一个独立的对象。这样做可以隐藏...

    Java面向对象基础(课件)

    Java面向对象基础是Java编程语言的核心概念之一,它在软件开发中扮演着至关重要的角色。本课件主要针对Java的基础部分进行讲解,特别是面向对象的基本概念以及数组的使用。 首先,我们来深入理解Java的面向对象特性...

    Java面向对象基础

    Java面向对象基础 适合java基础学习者 是不二的选择!!! 还在犹豫什么 顶!

    JAVA面向对象基础ppt课件.ppt

    "JAVA面向对象基础ppt课件" 本课件主要介绍了Java面向对象编程的基础知识,包括类和对象的关系、面向对象的思想、构造方法、对象创建的内存模型、垃圾回收机制、Java中的关键字等。 一、类和对象的关系 在面向...

    JAVA面向对象基础教程 学习JAVA编程思想的很好的

    《JAVA面向对象基础教程》是一本深入浅出的JAVA编程思想学习资源,适合初学者快速入门,也适合有经验的开发者进一步深化对JAVA面向对象编程的理解。本教程全面覆盖了JAVA语言的核心概念,旨在帮助读者掌握JAVA编程的...

    java面向对象基础教程

    **Java面向对象基础教程** Java是一种广泛使用的编程语言,尤其以其强大的面向对象特性而闻名。面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将现实世界中的实体抽象为“对象”,通过对象...

    JAVA面向对象基础PPT教案学习.pptx

    JAVA面向对象基础知识点总结 JAVA面向对象基础知识点总结 一、类和对象的关系 * 类和对象的概念 * 面向对象的思想: Object Oriented Programming(OOP) * 面向对象的三个特征:封装、继承、多态 二、类的定义 ...

    java面向对象基础保姆级教程

    java面向对象基础保姆级教程

    JAVA面向对象基础1PPT教案学习.pptx

    JAVA面向对象基础1PPT教案学习.pptx

    Java面向对象基础知识点复习

    1.面向对象的三个特征  封装:封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。  继承:继承实际上是存在与...

    Java面向对象编程基础PPT课件.pptx

    Java 面向对象编程基础 面向对象编程是一种编程范式,强调将问题域中的对象和概念映射到编程语言中的对象和概念。Java 是一种面向对象的编程语言,支持面向对象编程的基本概念和机制。 对象、类和实体 在面向对象...

    Java 面向对象 程序设计基础实例

    这个基础实例将引导初学者逐步掌握Java面向对象编程的基本原理和实践技巧。 首先,我们需要理解“面向对象”(Object-Oriented Programming, OOP)的核心概念。OOP主要包括类(Class)、对象(Object)、继承...

    JAVA编程基础-05面向对象基础.pdf

    面向对象编程(OOP)是Java语言的重要特点,它从现实世界中客观存在的事物出发来构造软件系统,并尽可能运用人类的自然思维方式。面向对象编程的思想强调直接以问题域中的事物为中心来思考问题,认识问题,并根据...

    6-Java面向对象基础(01)

    Java是一种广泛使用的面向对象编程语言,其设计哲学是“一切皆为对象”。在Java中,面向对象编程(Object-Oriented Programming,OOP)是一种重要的编程范式,它与面向过程编程有所不同。本节我们将深入探讨这两者的...

    java面向对象编程源码

    本书内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设计模式,介绍常见Java类库的用法,总结优化 Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理。...

Global site tag (gtag.js) - Google Analytics