这周blog我也不知道要写什么,因为这章我其实学得有点懵,前面那几天我纠结了好久代码,一直不知道原因错在哪里。后来经过询问老师才知道自己调用错了构造方法,相信也有跟我一样的新手会犯这个错误。
我在创建关于介绍书的类的时候,有这么一个规定,如果书的页码少于200页就设置为默认200页。
我的代码是这样写的:
package day05_task;

public class BookTest {

public static void main(String[] args) {
Book b1 = new Book("黑苹果", 120);
Book b2 = new Book("灰栗子", 500);
b1.detail();
b2.detail();
}
}

class Book{ //定义一个类
//Book(){} //构架一个无实参的编译器
Book(String title, int pageNum){ //构建一个有实参的编译器

this.title = title; //赋值 变量给当前属性
this.pageNum = pageNum;
}
//私有化类的属性
private String title;
private int pageNum;
void detail(){
System.out.println("书名:" + getTitle() + "\n" + "页数:" + getPageNum() + "\n");
}
//获取可设置属性变量的权限 通过 public 和set语句
public void setTitle(String title){

this.title = title;
}
public String getTitle(){
return title;
}
public void setPageNum(int pageNum){
if(pageNum < 200)
this.pageNum = 200;
}
public int getPageNum(){
return pageNum;
}

}
大家可有发现什么错误吗?
我把public void setPageNum(int pageNum){
if(pageNum < 200)
this.pageNum = 200;
}
写在了成员方法里,而应该写在构造方法里。这个时候我就有疑问了,因为我是依样画葫芦写的,老师在视频里面也是写在setter里面的,为什么我就不行呢?
后来问了老师后才知道,视频里老师用的是无参构造器,我定义的是有参构造器!!!
所以按照我的思路,正确的代码应该是:
package day05_task;

public class BookTest {

public static void main(String[] args) {
Book b1 = new Book("黑苹果", 100);
Book b2 = new Book("灰栗子", 500);
b1.detail();
b2.detail();
}
}

class Book{ //定义一个类
//Book(){} //构架一个无实参的编译器
Book(String title, int pageNum){ //构建一个有实参的编译器

this.title = title;
if(pageNum < 200) {
this.pageNum = 200;//赋值 变量给当前属性
}else {
this.pageNum = pageNum;
}
}
//私有化类的属性
private String title;
private int pageNum;
void detail(){
System.out.println("书名:" + getTitle() + "\n" + "页数:" + getPageNum() + "\n");
}
//获取可设置属性变量的权限 通过 public 和set语句
public void setTitle(String title){

this.title = title;
}
public String getTitle(){
return title;
}
public void setPageNum(int pageNum){
this.pageNum = pageNum;
}
public int getPageNum(){
return pageNum;
}

}

这周太忙,就写这点点吧。。。

面向对象进阶时,if语句写错位置的更多相关文章

  1. SQL Server中事务transaction如果没写在try catch中,就算中间语句报错还是会提交

    假如我们数据库中有两张表Person和Book Person表: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ) NULL, [CreateTi ...

  2. 周末班:Python基础之面向对象进阶

    面向对象进阶 类型判断 issubclass 首先,我们先看issubclass() 这个内置函数可以帮我们判断x类是否是y类型的子类. class Base: pass class Foo(Base ...

  3. Python面向对象进阶和socket网络编程-day08

    写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __i ...

  4. Python面向对象进阶和socket网络编程

    写在前面 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __init__(self ...

  5. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  6. day26、面向对象进阶:多态、封装、反射

    一.多态 什么是多态: 类的继承有两层意义:1.改变 2.扩展 多态就是类的这两层意义的一个具体的实现机. 即:调用不同类实例化的对象,下的相同的方法,实现的过程不一样 python中的标准类型就是多 ...

  7. Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)

    Python开发[第七篇]:面向对象   详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇)   上一篇<Python 面向对象(初级篇)> ...

  8. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

  9. 铁乐学python_day24_面向对象进阶1_内置方法

    铁乐学python_day24_面向对象进阶1_内置方法 题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面 ...

随机推荐

  1. Adaptive Threshold

    Adaptive Threshold 1. Otsu's Binarization: Using a discriminant analysis to partition the image into ...

  2. webpack 5 new features All In One

    webpack 5 new features All In One Webpack 5 release (2020-10-10) https://webpack.js.org/blog/2020-10 ...

  3. Vue Big Changes All in One

    Vue Big Changes All in One Vue 重大更新 Vue Versions Vue 版本变更 Vue 3.x Vue 2.x refs vue lifecycle https:/ ...

  4. how to config custom process.env in node.js

    how to config custom process.env in node.js process.env APP_ENV NODE_ENV https://nodejs.org/api/proc ...

  5. 数据归一化 scikit-learn中的Scaler

    1 import numpy as np 2 from sklearn import datasets 3 4 # 获取数据 5 iris = datasets.load_iris() 6 X = i ...

  6. Python爬虫_百度贴吧

    # 本爬虫为爬取百度贴吧并存储HTMLimport requests class TiebaSpider: def __init__(self, tieba_name): self.tieba_nam ...

  7. idea将文件push之后如何回退

  8. [信号与系统]傅里叶变换、DFT、FFT分析与理解

    目录 一.前言 二.傅里叶变换 1.傅里叶级数 2.傅里叶级数系数求解 2.1.求解方法 2.2.三角函数的正交性 2.3.系数求解过程 2.4.关于傅里叶级数的个人感悟 3.引入复指数 4.总结 三 ...

  9. the import java.util cannot be resolve

    重新配置一下build path 的jre,如果不行的话就重新设置jre(在add library中installed JREs)

  10. CentOS7 下Docker最新入门教程 超级详细 (安装以及简单的使用)

    转载https://blog.csdn.net/wzsy_ll/article/details/82866627 1.为什么使用Docker(本人) 最近总是频繁的在新服务器发布项目, 每次发布都需要 ...